Mostrar processos em execução com nome (s) de arquivo?


12

Estou usando o putty para conectar meu servidor linux no qual meus sites estão. Posso executar

# ps aux | less

para mostrar processos em execução. Mas quero exibir quais arquivos estão executando esses processos?

Eu também tentei

# ps aux | grep <pid>

Mas obtendo este erro:

-bash: syntax error near unexpected token `newline'

Qual é a maneira correta de fazer isso?


4
em grep <pid>, você é suposto para substituir <pid>com o seu ID de processo real (é um número). <pid>é apenas um espaço reservado, não algo que você realmente deve digitar.
precisa

Respostas:


13

ps aux | grep <pid>não é um comando shell. A notação <pid>é uma convenção comum que significa "colocar o PID lá". Por exemplo, se o PID for 1234, você executaria ps aux | grep 1234. Este não é um comando muito útil, você também pode executar ps u 1234.

Sua pergunta não é muito clara. O que você quer dizer com "com nomes de arquivos"? Se você deseja ver qual executável o processo 1234 está executando:

ls -l /proc/1234/exe

Se você deseja ver quais arquivos esse processo abriu:

ls -l /proc/1234/fd

Se você deseja ver a linha de comando completa com argumentos:

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

Se você preferir usar comandos, lsof -p1234mostra todos os arquivos que o processo abriu. ps uww 1234mostra várias informações sobre o processo 1234, incluindo a linha de comando completa.



3

Antes de tudo, ps aux | grep <PID>é útil quando você deseja mostrar os detalhes de um processo específico cujo PID(Identificador do Processo) é representado por <PID>.

Por exemplo ( ps aux | grep 'firefox\|USER'significa imprimir apenas linhas que contenham firefoxou 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

Portanto, o PID da minha firefoxinstância é 9021. Portanto, para usar o comando que você está tentando executar, eu substituirei <PID>por 9021:

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

Agora, não sei ao certo o que você quer dizer com "exibir quais arquivos estão executando esses processos". Se você quer mostrar quais arquivos esses processos estão usando, ps auxé uma maneira de fazê-lo. Digamos que abri o arquivo /usr/share/doc/nano/faq.htmlusando este comando:

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

Pude ver qual arquivo firefoxfoi aberto 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

O arquivo aberto é mostrado como um dos argumentos passados ​​para o Firefox. Observe que o PID é diferente (agora é em 31763vez de 9021), porque todo programa em execução possui seu próprio PID exclusivo.


Outro comando útil é top. Se você executá-lo com a -copção, ele mostrará os argumentos passados ​​para um comando e, com -u <your user>ele, mostrará apenas os processos iniciados pelo seu nome de usuário (substitua <your user>pelo seu nome de usuário real):

top -c -u terdon

Esta é a saída na minha máquina local (o usuário terdonestá executando apenas dois processos):

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 uma explicação das informações mostradas por top, consulte minha resposta a uma pergunta relacionada sobre SU.


0

alguns caracteres sob shell são para fins especiais como <>? "; ...

grep PID não é útil porque PID é a identificação do processo e o grep encontrará números ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.