Comando com o qual um processo foi executado

Comando com o qual um processo foi executado

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 pido myappprocesso, por exemplo, 1234. Existe uma maneira de obter o comando com todos os sinalizadores e redirecionar a saída para myapp.logalguma 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.

psmostrará aquela lista de argumentos concatenada com espaços e até um limite que você poderá aumentar com algumas psimplementações adicionando algumas -wopçõ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,APpara somente gravação com acréscimo, como se um >>redirecionamento fosse usado em um shell POSIX).

Responder2

Você pode usar o pscomando e especificar o pid para examinar com a -popção, usando a -fopção para fornecer uma listagem completa ou -lpara 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 -hopçã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 -fvocê 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.

informação relacionada