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: 206.855 ]

Por: Cristian Alexandre Castaldi em 24/06/2004


Modificando as prioridades de execução dos processos



Às vezes, algumas tarefas requerem mais tempo de execução do que outras. Por esta razão cada processo possui uma prioridade de execução.

As prioridades dos processos podem ser determinadas examinando a coluna PRI do programa top ou do comando "ps -l".

nice


O comando nice atribui um número de prioridade para um processo. Por default os processos de usuários são criados com prioridade 0. Nós podemos definir as prioridades oscilando entre +19 e -19, os números positivos indicam processos de baixa prioridade e os números negativos indicam processos de alta prioridade.

nice -n [número da prioridade] [comando/programa]

Vamos inicializar o vi com um nível de prioridade baixa, veja o exemplo:

# nice -n 19 vi
# ps -lax | grep vi

000     0  1072  1014  19  19  8504 3560 do_sel SN   pts/1      0:00 vi

Observe que a prioridade de processamento do vi agora é baixa, podemos utilizar o top para verificar a prioridade, veja o exemplo:

# top -d3 (Quando o programa iniciar pressione "T")
  5:21pm  up  1:09,  4 users,  load average: 0,47, 0,32, 0,36
49 processes: 48 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:  4,1% user,  2,2% system,  0,0% nice, 93,5% idle
Mem:   118964K av,  115336K used,    3628K free,       0K shrd,   42304K buff
                     50480K actv,       0K in_d,       0K in_c,       0K target
Swap:  100760K av,   22100K used,   78660K free                   22012K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
1087 root      18   0  1060 1060   848 R     3,5  0,8   0:00 top
1072 root      19  19  3560 3560  2584 S N   0,0  2,9   0:00 vi
  679 root       9   0  1124 1120   452 S     0,0  0,9   0:00 klogd

renice
O renice é um comando que altera a prioridade de um processo em execução.

renice [número da prioridade] [opção] processo

Podemos usar as seguintes opções:
  • -g - Faz com que o parâmetro seguinte seja interpretado como um IDs de grupos de processos.
  • -u - Faz com que o parâmetro seguinte seja interpretado como um nome de usuário.
  • -p - Faz com que o parâmetro seguinte seja interpretado como um ID de processo.

Agora vamos mudar a prioridade do vi para -19, com o processo em execução. Primeiro precisamos saber o número do processo, para isso podemos usar o comando pgrep, veja o exemplo:

# pgrep vi
1072

# renice -19 -p 1072
1072: prioridade antiga = 19; prioridade nova = -19

Agora que mudamos a prioridade de execução vamos verificá-la:

# ps -lax | grep vi
000     0  1072  1014   1 -19  8504 3560 do_sel S<   pts/1      0:00 vi

Observe agora que a prioridade do vi agora é alta.

nohup


O nohup é um comando que faz com que os processos ignorem o sinal hangup (sinal 1 - interrupção).

Vamos executar um processo que não poderá ser finalizado, veja o exemplo:

# nohup vi
nohup: appending output to `nohup.out'

# killall -1 vi
# ps -aux | grep vi

root       988  0.6 11.0 22120 13152 ?       S    08:27   0:06 kghostview /mnt/w
root      1001 14.3  3.0  8500 3572 pts/3    RN   08:38   0:50 vi
root      1026  0.0  0.5  1724  668 pts/4    S    08:44   0:00 grep vi

Observe que o processo não foi finalizado, então agora vamos finalizá-lo:

# killall -9 vi
# ps -aux | grep vi

root       988  0.5 11.0 22120 13152 ?       S    08:27   0:06 kghostview /mnt/w
root      1029  0.0  0.5  1724  668 pts/4    S    08:45   0:00 grep vi

Observe que o processo 1001 que representava o vi foi finalizado.

Aqui terminamos o artigo sobre processos, espero que este artigo lhe ajude no dia a dia. Até mais...

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

Sistema de boot, níveis de execução e shutdown

Servidor CVS: Instalando, configurando e gerenciando no Linux

Trabalhando com shell e variáveis de ambiente

Trabalhando com coringas, filtros e expressões regulares no shell

Lynis: Sistema de auditoria e segurança para Linux

Leitura recomendada

Linux, aí vamos nós!

Sistemas Operacionais, Kernel e Shell

Linux sob o ponto de vista de um iniciante

MATE Desktop 1.16.0 [GTK3] no Slackware

Abordagem de controle de banda com QoS

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts