Compreender Estados e Ciclo de Vida de Processos com ps e top
Neste passo, você aprenderá sobre os estados dos processos Linux e seus ciclos de vida. Compreender os estados dos processos é crucial para monitorar e gerenciar os recursos do sistema de forma eficaz. Você utilizará os comandos ps e top para observar os processos e seus estados.
Cada processo no Linux possui um estado que descreve sua atividade atual. Esses estados são definidos pelo kernel e indicam se um processo está em execução, em espera, parado ou em outras condições.
Vamos começar examinando os estados dos processos usando o comando ps. O comando ps reporta um instantâneo dos processos atuais.
Primeiro, abra seu terminal. Você pode fazer isso clicando no ícone do terminal na área de trabalho ou pressionando Ctrl+Alt+T. Seu diretório de trabalho padrão é ~/project.
Para ver todos os processos em execução no seu sistema, incluindo aqueles sem um terminal de controle, use o comando ps aux. As opções aux exibem os processos pertencentes a todos os usuários (a), processos sem um terminal de controle (x) e mostram um formato orientado ao usuário (u).
ps aux
Você verá uma longa lista de processos. Preste atenção à coluna STAT, que mostra o estado de cada processo. Estados comuns que você pode observar incluem:
R: Em execução ou pronto (na CPU ou aguardando execução)
S: Sono interrompível (aguardando o término de um evento)
D: Sono ininterrupível (aguardando E/S, não pode ser interrompido)
T: Parado (suspenso por um sinal)
Z: Zumbi (processo terminado, mas o processo pai não recolheu seu status de saída)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 171820 16140 ? Ss HH:MM 0:01 /usr/lib/systemd/systemd ...
root 2 0.0 0.0 0 0 ? S HH:MM 0:00 [kthreadd]
labex 3448 0.0 0.2 266904 3836 pts/0 R+ HH:MM 0:00 ps aux
...output omitted...
Em seguida, vamos usar o comando ps -ef. Este comando fornece uma lista completa (f) de todos os processos (e), mostrando mais detalhes como o ID do processo pai (PPID), utilização da CPU (C), hora de início (STIME) e o comando (CMD).
ps -ef
Esta saída é frequentemente usada para ver as relações pai-filho entre os processos, embora não mostre explicitamente uma estrutura de árvore.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 HH:MM ? 00:00:01 /usr/lib/systemd/systemd ...
root 2 0 0 HH:MM ? 00:00:00 [kthreadd]
root 3 2 0 HH:MM ? 00:00:00 [rcu_gp]
...output omitted...
Para visualizar a hierarquia de processos, você pode usar a opção ps --forest. Isso exibe os processos em um formato de árvore, facilitando a compreensão de quais processos geraram outros.
ps --forest
Este comando é particularmente útil para depuração e compreensão de como diferentes serviços e aplicativos são estruturados no seu sistema.
PID TTY TIME CMD
2768 pts/0 00:00:00 bash
5947 pts/0 00:00:00 \_ sleep 10000
6377 pts/0 00:00:00 \_ ps --forest
...output omitted...
Agora, vamos explorar o comando top, que fornece uma visualização dinâmica em tempo real de um sistema em execução. Ele exibe um resumo das informações do sistema e uma lista de processos ou threads atualmente gerenciados pelo kernel Linux.
Execute o comando top:
top
Você verá uma exibição interativa. A seção superior fornece informações resumidas do sistema, incluindo tempo de atividade, média de carga, resumo de tarefas, estatísticas da CPU e uso de memória. A seção inferior lista os processos individuais, ordenados por uso de CPU por padrão.
Na saída do top, observe a coluna S para os estados dos processos, semelhante ao ps. Você também pode ver %CPU (porcentagem de uso da CPU) e %MEM (porcentagem de uso de memória) para cada processo.
top - HH:MM:SS up DD min, X users, load average: X.XX, X.XX, X.XX
Tasks: XXX total, X running, XXX sleeping, X stopped, X zombie
%Cpu(s): X.X us, X.X sy, X.X ni, XX.X id, X.X wa, X.X hi, X.X si, X.X st
MiB Mem : XXXX.X total, XXXX.X free, XXX.X used, XXX.X buff/cache
MiB Swap: XXXX.X total, XXXX.X free, X.X used. XXXX.X avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
XXXX labex 20 0 XXXXXX XXXX XXXX R X.X X.X 0:00.0X top
...output omitted...
Enquanto o top estiver em execução, você pode pressionar q para sair e retornar ao prompt do seu terminal.
Compreender esses comandos e as informações que eles fornecem é fundamental para monitorar e solucionar problemas de processos em um sistema Linux.