Suponha que eu executei o processo com o seguinte comando:
myapp -e -c -f myapp.config > /var/log/myapp/myapp.log 2>&1
Depois de um tempo, só tenho pid
o myapp
processo, por exemplo, 1234. Existe uma maneira de obter o comando com todos os sinalizadores e redirecionar a saída para myapp.log
alguma forma apenas por pid
?
Responder1
ps -o args= -p "$pid"
Informará a lista de argumentos dada ao último comando que o processo executou (ou, se não executou nenhum, aquele que seu pai executou...), desde que o processo não substitua sua lista de argumentos posteriormente.
ps
mostrará aquela lista de argumentos concatenada com espaços e até um limite que você poderá aumentar com algumas ps
implementações adicionando algumas -w
opções). No Linux, você pode ver a lista de argumentos separada por bytes NUL em arquivos /proc/$pid/cmdline
.
lsof +fg -ap "$pid" -d 0-2
Informará para onde apontam os descritores de arquivo stdin, stdout e stderr do processo e o modo em que foram abertos (como W,AP
para somente gravação com acréscimo, como se um >>
redirecionamento fosse usado em um shell POSIX).
Responder2
Você pode usar o ps
comando e especificar o pid para examinar com a -p
opção, usando a -f
opção para fornecer uma listagem completa ou -l
para uma listagem longa mais detalhada.
Como exemplo de saída:
$ sleep 60 &
[1] 31441
$ ps -lp 31441
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 31441 31319 0 80 0 - 1423 hrtime pts/3 00:00:00 sleep
$ ps -fp 31441
UID PID PPID C STIME TTY TIME CMD
root 31441 31319 0 10:44 pts/3 00:00:00 sleep 60
No entanto, isso gera uma linha de cabeçalho, que você pode não querer em seu arquivo de log. Você pode cortar isso usando a -h
opção, se seu pid for 1234:
ps -lhp 1234 >> /var/log/myapp/myapp.log 2>&1
Observe que redirecionei a saída usando >>
para anexar ao seu arquivo de log.
Responder3
Usando ps -f
você pode verificar a lista de argumentos e também redirecioná-la para qualquer arquivo.
Então, neste caso basta usarps -ef | grep 1234 > myapp.log
Por favor, checar istops página de manual.