Pular para o conteúdo
Início » Aprendendo Linux Parte 4 – Gerenciamento de Processos no Linux

Aprendendo Linux Parte 4 – Gerenciamento de Processos no Linux

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.

  1. 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
  1. 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.

  1. 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
  1. 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.