Gerenciamento de processos

Falar em “gerenciamento de processos” pode parecer coisa de advogado, mas é na verdade uma das funções básicas de qualquer administrador :). Um processo nada mais é do que um aplicativo ou um serviço ativo, que consome processamento e outros recursos do sistema. Em muitos casos, um determinado serviço pode deixar de responder, ou pode ser que um determinado aplicativo simplesmente entre em loop e passe a consumir cada vez mais memória e/ou processamento até que você consiga fechá-lo manualmente.

Para listar os processos ativos, ou seja, todos os programas e serviços abertos, usamos o comando “ps”. Como de praxe, ele suporta um enorme volume de opções, mas o uso mais comum é combiná-lo com as opções “aux”, o que faz com que ele mostre a lista completa, contendo os processos iniciados por todos os usuários:

# ps aux

A menos que você já seja um administrador experiente, com profundos conhecimentos, a lista vai mostrar diversos processos que você não conhece. Uma boa forma de descobrir a função de cada um é usar o comando “whatis”, que mostra a descrição curta do programa, como em:

# whatis named

named (8) – Internet domain name server (DNS)

Outra combinação de opções muito usada é a “axjf”, que mostra os processos de forma um pouco mais organizada, agrupando os processos relacionados:

# ps axjf

Em qualquer um dos dois casos, a lista é geralmente bastante extensa, mas se você souber o nome do aplicativo ou do serviço, você pode usar o pipe ( | ) combinado com o grep para filtrar a lista, como em:

# ps aux | grep gdm

root 6042 0.0 0.1 14316 1536 ? Ss Jun10 0:00 /usr/sbin/gdm
root 22692 0.0 0.0 14320 892 ? R 20:07 0:00 /usr/sbin/gdm
root 22691 0.0 0.0 3020 764 pts/0 R+ 20:07 0:00 grep gdm

Existem duas formas de finalizar um processo travado. A primeira é usando o comando “kill”, onde você deve especificar o PID, ou seja, o número de identificação do processo, mostrado na segunda coluna do relatório, como em:

# kill 6042

Usado dessa forma, o kill tenta finalizar o processo de forma limpa, enviando o sinal de finalização. Isso geralmente não funciona com processos travados, afinal, se o programa está travado, é provável que o sinal não seja processado. Nesse caso, adicionados a opção “-9”, que faz com que ele seja finalizado na marra, como em:

# kill -9 6042

A segunda maneira de finalizar os processos é usando o comando “killall”, onde você especifica diretamente o nome do serviço ou programa que quer finalizar, como em:

# killall gdm

Como pode ver, o comando “ps” serve para que você consiga localizar o culpado do problema, para então poder finalizá-lo usando o kill ou o killall.

Uma variação do “ps” é o comando “pstree”, que vai um passo além dentro do conceito de organização. Ele é geralmente combinado com a opção “-p”, que faz com que ele mostre os IDs dos processos, de forma que você possa finalizá-los usando o kill:

# pstree -p

Temos também o comando “top“, que desempenha a função de gerenciador de processos em modo texto, mostrando uma lista atualizada continuamente:

4ddf2d7d

Para organizar a lista, mostrando os processos que estão consumindo mais processamento nas primeiras posições (uma boa forma de localizar processos travados), pressione a tecla “g”. Para finalizar um processo, pressione a tecla “k” e digite o PID. Se quiser finalizar o processo na marra, como ao usar o “kill -9”, digite “9” quando ele perguntar sobre o sinal que será usado. Para voltar ao terminal, use a tecla “q“.

Uso de memória: Uma dúvida comum é sobre o consumo de memória dos processos, que é mostrado na coluna “RSS” do relatório do ps. O valor é informado em kbytes, de forma que um processo que apareça com o valor “6184”, por exemplo, está consumindo pouco mais de 6 MB.

Entretanto, os números não são exatos, pois não levam em conta um fator importante, que é a reutilização de áreas de memória por parte do Kernel. Se um mesmo aplicativo é aberto várias vezes, sempre carregando os mesmos arquivos e as mesmas bibliotecas, o Kernel logo aprenderá a aproveitar essas informações, reutilizando as áreas de memória em que elas estão armazenadas, em vez de carregar tudo novamente a cada abertura do programa.

Se cada instância do aplicativo consome 6 MB, por exemplo, e ele é aberto 20 vezes, o relatório do ps mostrará 6 MB de consumo de memoria para cada um, muito embora na realidade eles estejam consumindo muito menos. O ps não tem acesso a essas informações e por isso ele se limita a exibir o total usado por cada processo, sem levar em conta as áreas compartilhadas. Isso faz com que o relatório de uso de memória do ps e de outros utilitários similares sirva mais como uma estimativa aproximada, que não deve ser levada ao pé da letra.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X