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

11

Estou usando o putty para conectar meu servidor linux no qual meus sites estão. Eu posso rodar

# ps aux | less

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

Eu também tentei

# ps aux | grep <pid>

Mas recebendo este erro:

-bash: syntax error near unexpected token 'newline'

Qual é a maneira correta de fazer isso?

    
por Tshepang 06.04.2013 / 16:19

4 respostas

11

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

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

ls -l /proc/1234/exe

Se você quiser ver quais arquivos esse processo abriu:

ls -l /proc/1234/fd

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

tr '
ls -l /proc/1234/exe
' '\n' </proc/1234/cmdline

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

    
por 08.04.2013 / 03:05
5

tente executar o seguinte:

ps -ef
    
por 06.04.2013 / 16:30
2

Antes de mais nada, 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 as linhas que contêm firefox ou 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 instância firefox é 9021. Então, para usar o comando que você está tentando executar, eu substitui <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 tenho certeza do que você quer dizer com "exibir quais arquivos estão executando esses processos". Se você quer dizer quais arquivos esses processos estão usando, ps aux é uma maneira de fazer isso. Digamos que eu abri o arquivo /usr/share/doc/nano/faq.html usando este comando:

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

Eu pude ver qual arquivo firefox tinha 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 ao firefox. Observe que o PID é diferente (agora é 31763 em vez de 9021 ) porque cada programa em execução possui seu próprio PID exclusivo.

Outro comando útil é top . Se você executá-lo com a opção -c , ele mostrará os argumentos passados para um comando e, com -u <your user> , ele mostrará apenas 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 terdon está 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 obter uma explicação das informações exibidas por top , consulte minha resposta para uma pergunta relacionada sobre SU.

    
por 06.04.2013 / 17:17
0

alguns caracteres em shell são para finalidades especiais, como < > ? "; ...

O grep PID não é útil porque o PID é o ID do processo e o grep encontrará valores numéricos similares ...

    
por 06.04.2013 / 16:33