Comando con el que se ejecutó un proceso

Comando con el que se ejecutó un proceso

Supongamos que ejecuté el proceso con el siguiente comando:

myapp -e -c -f myapp.config > /var/log/myapp/myapp.log 2>&1

Después de un tiempo, solo tengo pidun myappproceso, por ejemplo, 1234. ¿Hay alguna manera de obtener el comando con todos los indicadores y redirigir la salida de myapp.logalguna manera simplemente por pid?

Respuesta1

ps -o args= -p "$pid"

Le indicará la lista de argumentos dada al último comando que ejecutó el proceso (o si no ejecutó ninguno, el que ejecutó su padre...) siempre que el proceso no anule su lista de argumentos posteriormente.

psmostrará esa lista de argumentos concatenada con espacios y hasta un límite que puede aumentar con algunas psimplementaciones agregando un par de -wopciones). En Linux, puede ver la lista de argumentos separada por bytes NUL en formato /proc/$pid/cmdline.

lsof +fg -ap "$pid" -d 0-2

Le dirá a qué apuntan los descriptores de archivos stdin, stdout y stderr del proceso y el modo en el que se abrieron (por ejemplo, W,APsolo escritura con anexo, como si >>se usara una redirección en un shell POSIX).

Respuesta2

Puede usar el pscomando y especificar el pid para examinar con el -pmodificador, usando el -fmodificador para proporcionar una lista completa o -lpara una lista larga más detallada.

Como ejemplo de salida:

$ 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

Sin embargo, esto genera una línea de encabezado, que quizás no desee en su archivo de registro. Puedes recortar esto usando la -hopción, si tu pid era 1234:

ps -lhp 1234 >> /var/log/myapp/myapp.log 2>&1

Tenga en cuenta que he redirigido la salida usando >>para agregar a su archivo de registro.

Respuesta3

Al usarlo, ps -fpuede verificar la lista de argumentos y también redirigirla a cualquier archivo.

Entonces, en este caso solo usaps -ef | grep 1234 > myapp.log

Por favor, chequee estops página de manual.

información relacionada