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.