Analisando processos em seu GNU/Linux

Muitas vezes é necessário que tomemos conhecimento sobre quais processos estão rodando em nosso Linux, seja para analisarmos algum processo em particular, ou termos uma visão geral do funcionamento do sistema. Esta é uma das tarefas mais importantes para um administrador, pois é importantíssimo saber o que realmente está acontecendo em determinado momento com o sistema.

[ Hits: 78.053 ]

Por: Percival F. Jr. em 22/07/2008 | Blog: http://www.debianbrasil.890m.com


Mais um pouco sobre o tema...



Se o administrador precisar de ainda mais informações do que as providas pelos parâmetros "ef", poderá lançar mão da seguinte:

$ ps -efl

0 S percival 10893     1  0  75   0 -  8787 -      12:23 ?      00:00:09 gedit
0 S percival 11088     1  1  75   0 - 19630 stext  12:28 ?      00:00:19 evinc
0 R percival 11408     1  0  76   0 -  8609 stext  12:36 ?      00:00:00 gnome
0 S percival 11409 11408  0  79   0 -   620 -      12:36 ?      00:00:00 gnome
0 S percival 11410 11408  0  75   0 -  1375 wait   12:36 pts/0  00:00:00 bash
0 S percival 11989  3680  0  76   0 -  1259 pipe_w 12:51 ?      00:00:00 /usr/

A informação mais interessante neste caso está na segunda coluna, e define o STATUS do processo; sua saída deverá ser interpretada da seguinte maneira:
  • O - Rodando no processador;
  • S - Dormindo;
  • R - Pronto para rodar;
  • Z - Zumbi (processo foi terminado, e o pai deste processo não está mais presente);
  • T - Processo terminado.

Para definir uma árvore hierárquica na análise dos processos (e saber quem é o processo-pai de determinado programa), podemos usar o parâmetro "H". Veja um exemplo:

$ ps -eH | grep compiz

  PID TTY          TIME CMD 
 3705 ?        00:00:00   compiz-manager
 3794 ?        00:00:23     emerald
 3795 ?        00:00:00     compiz
 4010 ?        00:00:00       compiz
 4011 ?        00:03:19         compiz.real

Notem que o processo 3705 (compiz-manager) deu início aos processos 3794 e 3795. Este último solicitou o início do processo 4010, que por sua vez trouxe junto o 4011.

Vou fazer um pequeno resumo dos parâmetros mais utilizados para definir a saída do "ps", no estilo UNIX. Estes podem ser adicionados ao ps no shell depois de um "-". Muito mais parâmetros podem ser usados, e para tomar conhecimento destes, recorra ao manual do ps (man ps).
  • A ou e : mostra TODOS os processos;
  • T : mostra todos os processo associados ao terminal atual;
  • e : mostra todos os processos de todos os terminais;
  • x : mostra os processos não controlados por um terminal;
  • f : mostra uma listagem em formato completo;
  • F : mostra uma listagem mais completa ainda;
  • H : processos em ordem hierárquica.

Usando o parâmetro "l", temos mais informações. Veja:

$ ps -l

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  4080  4075  0  75   0 -  1374 wait   pts/0    00:00:00 bash
0 R  1000  5726  4080  0  76   0 -   806 -      pts/0    00:00:00 ps

  • F = flags do sistema, designadas para o processo pelo kernel;
  • PRI = prioridade do processo;
  • NI = este valor "NIce" é utilizado para se determinar as prioridades dos processos;
  • ADDR = endereço de memória ocupado pelo processo.;
  • SZ = espaço usado pelo processo, se foi varrido para a swap;
  • WCHAN = endereço da função do kernel onde o processo está "dormindo".

Tendo estas noções básicas em mente, fica fácil a partir de agora você monitorar os processos de seu GNU/Linux com o comando "ps". Mas note que o "ps" nos mostra os processos ocorridos em determinado ponto no tempo. E se o administrador precisar de algo mais "dinâmico"?

Existe uma opção para esta tarefa: monitorar os processos em TEMPO REAL. Para isso, podemos utilizar o comando top.
O "top" providencia uma análise dos processos a cada 3 segundos, diretamente no terminal, com informações úteis ao administrador.

Na primeira parte do output vemos a hora atual seguida do uptime (quanto tempo o sistema está de pé). Logo a seguir está o número de usuários logados.

No final da primeira linha, veremos a média de carga do sistema. São 3 números que nos dão a média de carga de trabalho no último minuto, nos últimos 5 minutos e por fim, no últimos 15 minutos. Quanto maior este número, mais o computador trabalhou.

Esta média de carga (em inglês, "load average") pode nos indicar algum problema no sistema. Se o valor correspondente à carga dos últimos 15 minutos estiver alto (2 por exemplo), melhor checar o que pode estar ocorrendo e que processo está ocasionando isto.

Na segunda linha, nada de mais. "Tasks" indica quantos processos estão acontecendo em seu sistema naquele momento, e depois o número de processos em cada estado (já explicado anteriormente).

Na terceira linha temos o display sobre o uso da CPU.

Na quarta e quinta linhas, informações sobre o gerenciamento de memória. Na primeira: memória física total, usada pelo sistema, livre; o mesmo se repete na linha de baixo, só que em relação à memória virtual (swap).

Comandos interativos básicos para uso com o "top". Tecle o comando enquanto o "top" estiver correndo no terminal para funções extras:
  • 1 - alterna entre o modo single-CPU e SMP (symmetric multi-processor).
  • z - troca a cor do display.
  • k - abre entrada para matar determinado processo.
  • d - muda o intervalo de atualização.
  • q - sai do "top".

Mais comandos em man top.

Página anterior     Próxima página

Páginas do artigo
   1. Analisando processos
   2. Adendo 1 - Gerenciamento de memória
   3. Voltando ao assunto...
   4. Adendo 2 - O init
   5. Mais um pouco sobre o tema...
   6. Adendo 3 - Matando processos
   7. Considerações finais
Outros artigos deste autor

Livestation - Assista TV no seu GNU/Linux

Como selecionar que processos serão iniciados ao boot - sysv-rc-conf

Linux_logo: customizando até o SHELL do seu GNU/Linux

Desktop em 3D - customizando seu GNU/Linux

Como turbinar seu GIMP com mais fontes

Leitura recomendada

Ambiente X-Window, a continuação

O usuário: o computador e você

openSUSE Tumbleweed Snapshots - A Melhor Forma de Controle de Atualizações e Quebras do Sistema

Como um Debian é inicializado

Virtualização dos sistemas operacionais: CentOS, Debian, Slackware e Ubuntu

  
Comentários
[1] Comentário enviado por maran em 22/07/2008 - 10:32h

Percival, meus parabéns, realizou um excelente trabalho.
Gostei muito, bem explicado, ficou bem claro o que você quis passar.
Bom, só me resta adiciona-lo aos favoritos
:)

Abraços

[2] Comentário enviado por gjr_rj em 22/07/2008 - 11:05h

Parabéns,

também vai para meus favoritos.

[3] Comentário enviado por Pianista em 22/07/2008 - 11:35h

Muito Bom! está de parabéns! e para aqueles que quiserem matar uma arvore de processos pelo nome existe o "$ killall nomedocomandoqueiniciouoprocesso" d=^) .. EX: "$killall firefox", testem ai.. hauhauhauha.. xD

você é uma altarquia!
Abraços! Valew!

[4] Comentário enviado por phvie em 22/07/2008 - 14:06h

Ótimo artigo! Bem explicado e de fácil entendimento.

[5] Comentário enviado por eltondhiego em 22/07/2008 - 14:21h

Ótimo artigo!! Parabéns!!

[6] Comentário enviado por iz@bel em 22/07/2008 - 17:08h

Eu tava precisando aprender um pouco mais sobre isso mesmo, valeu!
Muito Bom!

[7] Comentário enviado por f_Candido em 23/07/2008 - 23:03h

Excelente. Ficou muito bom. Pré-requisito para qualquer aspirante a Linuxer.

Abraços

[8] Comentário enviado por ario em 24/07/2008 - 07:40h

Só para completar existe um aplicativo que se chama htop, vale a pena conhecer.
Para melhores informações: http://htop.sourceforge.net/
Precisa de bibliotecas ncurses instaladas.

htop é um visualizador de processos do Linux, bem como estado da memória, tudo com distinção de cores. É quase um gráfico, porém para consoles e emuladores de terminais. Ele concentra funções, de forma intregada dos comandos mem, tree, ps, kill, top, nice, ou seja tudo que é relacionado à processos (memória e cpu) numa mesma interface de forma organizada e agradável. Para mim é muito útil para manutenção remota via terminal SSH... Bem! somente usando é que a gente sabe, como que ele salva nestas horas!




[9] Comentário enviado por rafael_novello em 13/08/2008 - 09:56h

Acho que este é um dos melhores tutos que eu ja li...muito legal msm...parabens!!!!

Aqui sempre encontro ótimos tutos sobre Linux...

VLW

[10] Comentário enviado por eng_ividal em 18/09/2008 - 11:33h

Bem completo o seu artigo parabens!!!

[11] Comentário enviado por souza889 em 12/05/2009 - 21:13h

Percival

Sinceramente, este é o tutorial! claro não desmerecendo nenhum outro, mas gostei da forma com que abordou o assunto, deixou bem claro a importância do entendimento e conhecimento do sistema.
Parabéns. Este vai para meus favoritos.

Abração

[12] Comentário enviado por laurimourenbrame em 13/04/2012 - 14:29h

Parabéns, excelente artigo, me ajudou bastante, ou melhor, me salvou! Obrigado e abraço.

[13] Comentário enviado por vinteumdoonze em 14/03/2013 - 00:45h

Muito bom o artigo, aprendi muito, Parabéns. Ganhou +1 favoritos.

[14] Comentário enviado por felipe_futty em 07/06/2013 - 14:27h

Muito bom artigo, apenas fiquei com uma dúvida:
Como eu faria para saber quanto tempo EXATO um certo processo está rodando?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts