¿Mostrar procesos en ejecución con nombre (s) de archivo?

12

Estoy usando masilla para conectar mi servidor Linux en el que están mis sitios. Puedo ejecutar

# ps aux | less

para mostrar procesos en ejecución. ¿Pero quiero mostrar qué archivos ejecutan estos procesos?

También he intentado

# ps aux | grep <pid>

Pero obteniendo este error:

-bash: syntax error near unexpected token `newline'

¿Cuál es la forma correcta de hacerlo?

tshepang
fuente
44
en grep <pid>, se supone que debes reemplazar <pid>con tu ID de proceso real (es un número). <pid>es solo un marcador de posición, no es algo que realmente deba escribir.
Ben Voigt

Respuestas:

13

ps aux | grep <pid>No es un comando de shell. La notación <pid>es una convención común que significa "poner el PID allí". Por ejemplo, si el PID es 1234, correría ps aux | grep 1234. Este no es un comando muy útil, también podrías ejecutarlo ps u 1234.

Tu pregunta no es muy clara. ¿Qué quiere decir con "con nombres de archivo"? Si desea ver qué ejecutable se está ejecutando el proceso 1234:

ls -l /proc/1234/exe

Si quieres ver qué archivos tiene abierto ese proceso:

ls -l /proc/1234/fd

Si desea ver la línea de comando completa con argumentos:

tr '\0' '\n' </proc/1234/cmdline

Si prefiere usar comandos, lsof -p1234muestra todos los archivos que el proceso ha abierto. ps uww 1234muestra varios datos sobre el proceso 1234, incluida la línea de comando completa.

Gilles 'SO- deja de ser malvado'
fuente
5

intente ejecutar lo siguiente:

ps -ef
ennuikiller
fuente
3

En primer lugar, ps aux | grep <PID>es útil cuando desea mostrar los detalles de un proceso específico cuyo PID(Identificador de proceso) está representado por <PID>.

Por ejemplo ( ps aux | grep 'firefox\|USER'significa imprimir solo líneas que contienen firefoxo USER):

ps aux | grep 'firefox\|USER'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
terdon  9021  2.5 11.8 1950888 970832 ?      Sl   Apr03 108:41 /opt/firefox/firefox

Entonces, el PID para mi firefoxinstancia es 9021. Entonces, para usar el comando que está intentando ejecutar, lo reemplazaría <PID>con 9021:

ps aux | grep 9021
terdon  9021  2.5 11.5 1948776 942640 ?      Sl   Apr03 109:03 /opt/firefox/firefox

Ahora, no estoy seguro de lo que quiere decir con "mostrar qué archivos ejecutan estos procesos". Si quiere decir qué archivos están utilizando estos procesos, ps auxes una forma de hacerlo. Digamos que he abierto el archivo /usr/share/doc/nano/faq.htmlcon este comando:

 firefox /usr/share/doc/nano/faq.html 

Pude ver qué archivo se firefoxhabía abierto usando ps:

ps aux | grep firefox
terdon   31763 18.7  1.0 682916 84352 pts/10   Sl+  17:10   0:02 firefox /usr/share/doc/nano/faq.html

El archivo abierto se muestra como uno de los argumentos pasados ​​a Firefox. Tenga en cuenta que el PID es diferente (ahora es en 31763lugar de 9021) eso se debe a que cada programa en ejecución tiene su propio PID único.


Otro comando útil es top. Si lo ejecuta con el -cinterruptor, mostrará los argumentos pasados ​​a un comando, y con -u <your user>él solo mostrará los procesos iniciados por su nombre de usuario (reemplace <your user>con su nombre de usuario real):

top -c -u terdon

Este es el resultado en mi máquina local (el usuario terdonsolo ejecuta dos procesos):

top - 17:14:41 up 3 days, 49 min, 14 users,  load average: 0.48, 0.54, 0.55
Tasks: 228 total,   1 running, 226 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.1 us,  5.5 sy,  0.0 ni, 86.5 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:   8187940 total,  8007220 used,   180720 free,   349264 buffers
KiB Swap:  8191996 total,     5556 used,  8186440 free,  4173004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                       
31573 terdon    20   0 24900 5576 1684 S   0.0  0.1   0:00.20 bash                                                          
31763 terdon    20   0  666m  77m  28m S   0.0  1.0   0:02.39 firefox /usr/share/doc/nano/faq.html                          

Para obtener una explicación de la información que se muestra en top, vea mi respuesta a una pregunta relacionada sobre SU.

terdon
fuente
0

Algunos caracteres bajo shell son para un propósito especial como <>? "; ...

grep PID no es útil porque PID es id de proceso y grep encontrará números numéricos similares ...


fuente