Criando, monitorando e terminando processos

Este artigo descreve como o administrador de sistemas pode gerenciar os processos do sistema de forma sucinta e prática. Faz uma abordagem clara dos comandos usados para o gerenciamento de processos: ps, pstree, top, kill, killall, bg, fg, jobs, pgrep, nice, renice e nohup.

[ Hits: 200.208 ]

Por: Cristian Alexandre Castaldi em 24/06/2004


Monitorando processos com ps, pstree e top



ps


O comando ps mostra os processos que estão sendo executados no sistema. Vejamos algumas opções:
  • a - Mostra todos os processos criados.
  • x - Mostra os processos que não são controlados pelo terminal.
  • u - Mostra o nome do usuário e a hora que o processo foi iniciado.
  • --help - Mostra a ajuda do comando ps (utilize também man ps)

# ps -aux
USER    PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root      1  0.1  0.4  1320  528 ?        S    11:34   0:04 init
root      2  0.0  0.0     0    0 ?        SW   11:34   0:00 [keventd]
root      3  0.0  0.0     0    0 ?        SW   11:34   0:00 [kapmd]
root      4  0.0  0.0     0    0 ?        SWN  11:34   0:00 [ksoftirqd_CPU0]
root      5  0.0  0.0     0    0 ?        SW   11:34   0:00 [kswapd]
root      6  0.0  0.0     0    0 ?        SW   11:34   0:00 [bdflush]
root      7  0.0  0.0     0    0 ?        SW   11:34   0:00 [kupdated]
root      8  0.0  0.0     0    0 ?        SW<  11:34   0:00 [mdrecoveryd]
root     12  0.0  0.0     0    0 ?        SW   11:34   0:00 [kjournald]
bin     647  0.0  0.3  1412  448 ?        S    11:35   0:00 portmap
root    667  0.0  0.5  1384  608 ?        S    11:35   0:00 syslogd -m 0
root    679  0.0  0.9  1916 1124 ?        S    11:35   0:00 klogd
daemo   767  0.0  0.4  1368  564 ?        S    11:35   0:00 /usr/sbin/atd
root    787  0.0  0.5  1552  696 ?        S    11:35   0:00 crond

A saída do comando ps é uma tabela onde cada coluna fornece uma informação:
  • USER - Nome do usuário dono do processo.
  • UID - Número de identificação do usuário dono do processo.
  • PID - Número de identificação do processo.
  • PPID - Número de identificação do processo pai de cada tarefa.
  • PRI - Número de prioridade da tarefa. (Números altos são prioridades baixas).
  • NI - Valor preciso da prioridade da tarefa.
  • %CPU - O consumo de processamento do processo.
  • %MEM - O consumo de memória do processo.
  • SIZE - Tamanho do código da tarefa em kilobytes.
  • RSS - Soma total da memória física usada pelo processo, em kilobytes.
  • WCHAN - Endereço ou nome da função do kernel da tarefa que está atualmente suspensa.
  • STAT - Estado do processo: S - Suspenso, R - em Execução, T - Interrompido, Z - Terminado, etc.
  • TTY - Terminal onde são executados os processos.
  • TIME - Tempo total da CPU usado pelo processo desde que foi iniciado.
  • COMMAND - Nome do comando do processo.

Suponhamos que eu não quero listar todos os processos, apenas quero saber informações de um processo específico. Veja o exemplo:

# ps aux | grep cron
root  347  0.0  0.3  1652  680 ?        S    09:00   0:00 /usr/sbin/cron

Note que listamos apenas as informações do processo usado pelo cron. Essa concatenação de comandos é bem útil, pois facilita a gerência dos processos.

pstree


O comando pstree é usado para visualizar a árvore de processos.

# pstree
init-+-alarmd
     |-apache---5*[apache]
     |-atd
     |-cron
     |-6*[getty]
     |-i2oevtd
     |-inetd


top


O comando top é usado como um monitor do sistema que mostra a atividade do processador em tempo real. Exibindo as tarefas que estão sendo executadas na CPU e fornecendo uma interface amigável para o gerenciamento de processos.

# top
10:10:45 up  1:13,  1 user,  load average: 0.10, 0.22, 0.23
86 processes: 85 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:   1.9% user,   1.9% system,   0.0% nice,  96.2% idle
Mem:    182408K total,   177064K used,     5344K free,    45564K buffers
Swap:    96764K total,     7368K used,    89396K free,    36228K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
10533 root      19   0   980  980   760 R     2.5  0.5   0:01 top
  628 root      10   0  7888 7428  6492 S     0.6  4.0   0:02 kdeinit
  375 root       6 -10 40284  31M  3464 S <   0.3 17.4   1:49 XFree86
    1 root       9   0   476  436   416 S     0.0  0.2   0:03 init
    2 root       9   0     0    0     0 SW    0.0  0.0   0:00 keventd
    3 root      19  19     0    0     0 SWN   0.0  0.0   0:00 ksoftirqd_CPU0
    4 root       9   0     0    0     0 SW    0.0  0.0   0:04 kswapd
    5 root       9   0     0    0     0 SW    0.0  0.0   0:00 bdflush
    6 root       9   0     0    0     0 SW    0.0  0.0   0:00 kupdated
    7 root       9   0     0    0     0 SW    0.0  0.0   0:00 i2oevtd

Veja algumas opções úteis do top:
  • -d [tempo] - Atualiza a tela após o tempo especificado.
  • -s - Executa o top em modo seguro
  • -i - Executa o top ignorando processos zumbis.
  • -c - Mostra a linha de comando ao invés do nome do programa.

Para obter mais ajuda, leia a man page do top (man top).

Podemos utilizar opções dentro do programa, em tempo real, enquanto ele está sendo executado:
  • h - Lista os comandos que podem ser usados no top.
  • espaço - Atualiza imediatamente a tela.
  • i - Ignora processos ociosos.
  • k - Mata um processo.
  • N - Classifica os processos por número de PID.
  • A - Classifica os processos por período.
  • P - Classifica os processos por uso de CPU.
  • M - Classifica os processos por uso de memória.
  • T - Classifica os processos por tempo.
  • u - Mostra os processos de um usuário específico.
  • n ou # - Lista um número de processos.
  • s - Específica o tempo em segundos para a atualização da tela.
  • W - Cria um arquivo de configuração do top (~/.toprc).
  • r - Aplica um renice no processo.
  • q - Sai do top.
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Processos
   3. Monitorando processos com ps, pstree e top
   4. Terminando processos com kill e killall
   5. Controlando tarefas com bg, fg e jobs
   6. Modificando as prioridades de execução dos processos
   7. Bibliografia
Outros artigos deste autor

Usando partições e sistemas de arquivos

Gerenciando quotas de disco

Autenticando usuários

Trabalhando com shell e variáveis de ambiente

Servidor CVS: Instalando, configurando e gerenciando no Linux

Leitura recomendada

Sabayon completo, personalizado e portátil, em pendrive de boot

Lendo as permissões dos arquivos Linux

Resumo LPI 102: Tópico 108 - Serviços Essenciais do Sistema

Instalando o Slackware 10.1

Instalação do Debian em partição ReiserFS

  
Comentários
[1] Comentário enviado por fabio em 24/06/2004 - 00:56h

Muito bom o artigo! Até para os administradores de sistemas com maior experiência ele tem algo a acrescentar, pois está rico em detalhes. E vale lembrar que são esses tipos de detalhes que compõem as questões de provas para certificação Linux, como por exemplo, comandos alternativos e pouco usados como pstree, fg, bg, teclas de atalho do top, etc.

[]'s

[2] Comentário enviado por quinho_k em 24/06/2004 - 10:21h

Uma pequena observaçao: o estado "Z" do processo significa "zombie", zumbi mesmo. O processo está semi-morto, mas não terminado. Normalmente é um problema matá-lo (ele já está morto , sacou? ;), e muitas vezes a solução é terminar o processo-pai pra acabar com o problema...
no mais, mto bom o artigo =)
parabéns

[3] Comentário enviado por agk em 24/06/2004 - 21:16h

Parabéns excelente artigo, muito bem estrutura, de fácil entendimento. Realmente me ajudará muito a trabalhar com processos.

[4] Comentário enviado por camilozero em 25/06/2004 - 01:19h

um processo ZUMBI pode ainda ser morto (novamente)
usando o comando kill -9 <PID do pporcesso>
onde o PID do processo eh um valor que vc pega
usando o comando ps ...
o artigo tah show de bola!

[5] Comentário enviado por flipe em 03/07/2004 - 14:20h

Esse tipo de documento é sempre uma boa.. pois são coisas q ñ se acham em abundância.... principalmente em português. E desta qualidade é simplemente sensacional... uma dica é q vc continue atualizando este doc... ele é muito bom.....

[6] Comentário enviado por Xxoin em 09/02/2005 - 01:10h

Outra grande utilidade deste artigo é auxiliar na análise de LOG's em programas que "vivem dando pau".

[7] Comentário enviado por gpr.ppg.br em 09/07/2006 - 11:43h

eu uso o linux com o programa x0rfbserver que é igual ao vnc + as vezes ele fecha sozinho. como faço para ele sempre ficar ligado.
ou quando ele desligar sozinho.. ligar automaticamente de novo?

abraços,
gpr.

[8] Comentário enviado por andersoncw em 02/01/2013 - 16:49h

Muito bons exemplos para demonstrar a utilização dos comandos bg, fg e jobs. Parabéns.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts