¿Cómo obtener la línea de comando del proceso UNIX?


8

¿Es posible tomar la línea de comando que se usó para invocar un proceso en Mac OS X?


1
ps --pid $PID -o args=Eso es lo que uso, de todos modos ...
yardena

2
El equivalente Mac de ese comando es:ps -p <pid> -o args=
Nate

1
si "-o args =" trunca la salida, puede intentarlops -p <pid> -o command=
Jose Alban

Respuestas:


11

ps axle muestra la línea de comando de todos los procesos en ejecución; puedes buscar el pid que quieras.


@ mark4o O simplemente ps awux | cat, ya que ps -w no limitará el número de columnas que se mostrarán cuando la salida no sea estándar, como cuando se canaliza a otro comando.
jtimberman

1
¿Por qué sucede esto cada semana? "Advertencia: sintaxis ps incorrecta, ¿quizás un falso '-'? Consulte procps.sf.net/faq.html " y "Tenga en cuenta que" ps -aux "es distinto de" ps aux ". Los estándares POSIX y UNIX requieren que" ps -aux "imprime todos los procesos propiedad de un usuario llamado" x ", así como imprime todos los procesos que serían seleccionados por la opción -a. Si el usuario llamado" x "no existe, esta ps puede interpretar el comando como "ps aux" en su lugar e imprime una advertencia. Este comportamiento está destinado a ayudar en la transición de scripts y hábitos antiguos. Es frágil, está sujeto a cambios y, por lo tanto, no se debe confiar en él ".
Hola71

No lo sé, hola71. Corregí mi respuesta de dos años por ti.
Bkkbrad

4

Hace:

~$ ps ax | grep "ntp"
   57   ??  Ss     0:04.66 /usr/sbin/ntpd -c /private/etc/ntp.conf -n
 3104 s000  S+     0:00.00 grep ntp

hacer lo que necesita (cambiar ntp al programa que le interesa)? Por lo general, esto me da los argumentos de la línea de comandos de los procesos en ejecución (por ejemplo, utilizo para verificar lo que Launchd usó al ejecutar un demonio del sistema).


2

cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'

Aunque es específico de Linux, obtiene la línea de comandos del proceso numerada $PROCESSNUMBERdirectamente desde el núcleo (la /proc/$PROCESSNUMBER/cmdlineparte) y la hace legible colocando cada argumento en una línea separada traduciendo (con tr -tokenreemplazo) los \ 0 en líneas nuevas (\ n).

¡Esta línea solo funciona si coloca un número de proceso real de un proceso en ejecución (puede encontrar uno ejecutando el comando ps -ef) en la parte $ PROCESSNUMBER!


3
El póster original pedía Mac OS X (que no tiene la caja procfs)
Andre Holzner

2
Oxargs -0 < /proc/PID/cmdline
Bash
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.