O gerenciamento de processos é uma habilidade essencial para qualquer administrador de sistemas Linux. Nesta aula, exploraremos como visualizar, gerenciar e manipular processos usando comandos como ps
, top
, htop
, kill
, nice
e renice
. Compreender esses comandos permitirá que você mantenha o controle sobre os processos em execução no seu sistema, otimizando o desempenho e resolvendo problemas de forma eficaz.
O Que São Processos?
Um processo no Linux é uma instância de um programa em execução. Cada processo possui um identificador único chamado PID (Process ID), além de várias outras informações, como estado, prioridade, e o usuário que iniciou o processo.
Visualizando Processos
Comando ps
O comando ps
exibe uma lista de processos em execução. Ele possui várias opções para personalizar a saída:
ps aux
: Exibe uma lista detalhada de todos os processos do sistema.ps -ef
: Outra forma detalhada de listar processos, mostrando a hierarquia.
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 15808 2260 ? Ss 10:00 0:01 init
usuario 1234 0.3 2.0 342344 41520 ? Sl 10:01 0:15 gnome-shell
Comando top
O comando top
fornece uma visão dinâmica e interativa dos processos em execução, atualizando a cada poucos segundos. Ele exibe informações sobre o uso da CPU, memória e outros recursos do sistema.
$ top
Dentro do top
, você pode usar teclas como P
para ordenar por uso de CPU, M
para ordenar por uso de memória, e k
para matar um processo pelo PID.
Comando htop
O htop
é uma versão aprimorada e mais amigável do top
, oferecendo uma interface colorida e mais interativa. Ele não vem instalado por padrão em todas as distribuições, mas pode ser instalado facilmente.
$ sudo apt-get install htop
# Para distribuições baseadas em Debian
$ htop
Gerenciamento de Processos
Comando kill
O comando kill
envia sinais para processos, permitindo que você finalize ou controle processos de várias maneiras. Os sinais mais comuns são:
SIGTERM
(15): Solicita ao processo que termine graciosamente.SIGKILL
(9): Força o processo a terminar imediatamente.
$ kill 1234
# Envia SIGTERM para o processo com PID 1234
$ kill -9 1234
# Envia SIGKILL para o processo com PID 1234
Comando killall
O killall
finaliza todos os processos que correspondem a um nome especificado.
$ killall nome_do_processo
# Envia SIGTERM para todos os processos com o nome especificado
$ killall -9 nome_do_processo
# Envia SIGKILL para todos os processos com o nome especificado
Comando pkill
O pkill
é semelhante ao killall
, mas permite especificar padrões mais complexos e até enviar sinais para processos com base em atributos diferentes, como o usuário que iniciou o processo.
$ pkill nome_do_processo
# Envia SIGTERM para processos que correspondem ao nome
$ pkill -9 -u usuario nome_do_processo
# Envia SIGKILL para processos que correspondem ao nome e foram iniciados pelo usuário especificado
Controle de Prioridade de Processos
Comando nice
O comando nice
inicia um novo processo com uma prioridade modificada. A prioridade, ou “niceness”, varia de -20 (mais alta prioridade) a 19 (menor prioridade).
$ nice -n 10 comando
# Inicia o comando com uma prioridade de 10
Comando renice
O renice
altera a prioridade de um processo em execução.
$ renice 5 -p 1234
# Altera a prioridade do processo com PID 1234 para 5
Você também pode alterar a prioridade com base no grupo de processos (-g
) ou no usuário (-u
).
$ renice 5 -u usuario
# Altera a prioridade de todos os processos do usuário especificado para 5
Monitoramento de Processos
Comando pstree
O comando pstree
exibe a hierarquia de processos em formato de árvore, mostrando a relação entre processos pai e filho.
$ pstree
init─┬─gnome-terminal─┬─bash───pstree
├─gnome-shell
└─systemd───(sd-pam)
Comando pgrep
O pgrep
busca processos pelo nome e retorna seus PIDs.
$ pgrep nome_do_processo
1234
5678
Você pode combinar pgrep
com outros comandos para ações mais complexas:
$ kill -9 $(pgrep nome_do_processo)
# Mata todos os processos que correspondem ao nome especificado
Exemplos Práticos
Exemplo 1: Encerrando um Processo Não Responsivo
Se um processo não está respondendo e precisa ser encerrado, você pode usar os comandos ps
e kill
.
- Liste os processos para encontrar o PID do processo problemático:
$ ps aux | grep nome_do_processo
usuario 1234 0.3 2.0 342344 41520 ? Sl 10:01 0:15 nome_do_processo
- Encerre o processo:
$ kill 1234
# Se o processo não responder, use SIGKILL
$ kill -9 1234
Exemplo 2: Alterando a Prioridade de um Processo
Se um processo está consumindo muitos recursos e afetando o desempenho do sistema, você pode ajustar sua prioridade.
- Encontre o PID do processo:
$ ps aux | grep nome_do_processo
usuario 1234 0.3 2.0 342344 41520 ? Sl 10:01 0:15 nome_do_processo
- Altere a prioridade:
$ renice 10 -p 1234
Exemplo 3: Iniciando um Processo com Baixa Prioridade
Para iniciar um processo que não deve interferir com outras atividades do sistema:
$ nice -n 19 comando
O gerenciamento de processos no Linux é uma competência crucial que permite manter o controle sobre o sistema, otimizar o desempenho e resolver problemas. Nesta aula, exploramos como visualizar, gerenciar e manipular processos usando uma variedade de comandos. Pratique esses comandos para ganhar confiança e domínio sobre o gerenciamento de processos no Linux.
Se tiver dúvidas ou sugestões, deixe um comentário no blog NerdExpert.com.br. Na próxima aula, abordaremos o agendamento de tarefas com cron
e at
.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.