Gerenciando processos no Ubuntu 12.04

18 de ago de 2013 - Paulo Dias


Nesse artigo vou mostrar como usar alguns comandos para gerenciar processos no linux. Mais uma vez estou usando o ubuntu 12.04 para os testes, mas tudo deve funcionar normalmente em outras distribuições ( sendo elas baseadas no debian ou não ).

O primeiro comando que vou mostrar é o ps. Eu normalmente uso ele da seguinte maneira:

 
ps aux | more
 
Onde:
USER é o nome do usuário que iniciou o processo;
PID é o id do processo;
% CPU é a porcentagem de uso do processador;
% MEM é a porcentagem de uso da memória;
VSZ é o tamanho virtual do processo ;
RSS é a quantidade de memória usada em KB;
TTY é o terminal do processo;
STAT é o estado atual do processo;
START é hora em que o processo foi iniciado;
COMMAND é comando que executa o processo;

O STAT pode ter os valores:
D um processo morto;
R um processo em execução;
S um processo parado(dormindo);
T um processo parado, por um sinal de controle;
Z um processo terminado, mas removido por seu processo pai;

E esses valores podem também ser combinados com os seguintes caracteres:
> o processo têm prioridade maior que o normal, a alteração foi feita pelo kernel;
< o processo têm prioridade menor do que o normal, a alteração foi feita pelo kernel;
+ o processo é pai :) possui processos filhos;
s o processo possui processos que dependem dele;
l o processo possui múltiplas threads;
L o processo possui páginas travadas na memória;
N o processo têm prioridade diferente do normal, a alteração foi feita por um usuário;

O comando ps é como um 'print screen' dos processos, ou seja ele mostra como os processos estavam em um determinado momento, mas em algumas situações pode ser melhor ver a 'movimentação' dos processos em 'tempo real'. Para isso é possível usar o comando top. Existe também o comando htop que é uma versão mais amigável do top.

Para instalar o htop no ubuntu digite no terminal:

 
sudo apt-get install htop
 

Depois de visualizar os processos você pode enviar sinais para mudar o comportamento deles. Você pode ver mais sobre os sinais aqui

Os sinais que eu já precisei usar são:
9 (SIGKILL) para matar o processo ( quase sempre uso esse :);
15 (SIGTERM) para terminar o processo;
18 (SIGCONT) para continuar um processo parado;
19 (SIGSTOP) para parar um processo;

Para enviar esses sinais aos processos é possível usar alguns comandos. Em alguns deles usamos o nome do programa e em outros usamos o PID.

Por exemplo nos comandos abaixo é usado o nome do programa para matar os processos:

 
pkill -9 firefox
killall -s 9 firefox

E no próximo é usado o PID de um processo para mata-lo;

kill -9 1889

Com o comando kill é necessário saber o PID do processo para enviar um sinal para ele. Você pode usar os comandos ps e top para encontrar esse número, mas existem comandos que facilitam essa busca, por exemplo:

pidof firefox
pgrep firefox

Para terminar vou mostrar dois comandos para alterar a prioridade de um processo. ( ainda não precisei utilizar esses comandos de verdade, só utilizei para testes ).

Para executar um processo com prioridade diferente do normal use o comando:

nice -n 19 firefox

E para alterar a prioridade de um processo use:

renice -20 1889

Bom, espero que esse artigo seja util para alguém... Se quiser ver outra forma de gerenciar processos no linux veja esse artigo do terminal de informação. Também tente executar o comando xkill para ver o que acontece :) Até mais...



Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux