Como monitorar processos e recursos no Linux com ferramentas nativas
1. Introdução ao monitoramento nativo no Linux
O Linux oferece um conjunto robusto de ferramentas nativas para monitoramento de processos e recursos do sistema. Diferentemente de soluções de terceiros, essas ferramentas estão disponíveis em praticamente todas as distribuições, sem necessidade de instalação adicional, e consomem recursos mínimos. Comandos como top, ps, free, df, iostat e netstat formam a base do diagnóstico de desempenho e solução de problemas.
O monitoramento é essencial para identificar gargalos de CPU, memória insuficiente, disco lotado ou problemas de rede. Dominar essas ferramentas permite que administradores e desenvolvedores tomem decisões rápidas e precisas sobre a saúde do sistema.
2. Monitoramento de processos com ps e top
O comando ps (process status) é a ferramenta mais básica para listar processos em execução. As opções mais comuns são:
ps aux
Este comando exibe todos os processos do sistema com informações detalhadas: usuário, PID, %CPU, %MEM, tempo de execução e comando. A saída inclui colunas como:
- USER: proprietário do processo
- PID: identificador único
- %CPU: uso percentual de CPU
- %MEM: uso percentual de memória
- VSZ: memória virtual usada
- RSS: memória física residente
Para uma visão em árvore hierárquica:
ps -ef --forest
O comando top oferece monitoramento em tempo real com atualização contínua:
top
Dentro do top, teclas de atalho permitem interação:
- P: ordenar por uso de CPU
- M: ordenar por uso de memória
- k: matar um processo (solicita PID)
- q: sair
Para filtrar processos por usuário específico:
top -u usuario
3. Análise de uso de CPU e memória com top, htop e free
Embora top seja poderoso, htop oferece uma interface mais amigável com cores e navegação por setas. Para instalar:
sudo apt install htop # Debian/Ubuntu
sudo yum install htop # RHEL/CentOS
Para verificar memória RAM e swap rapidamente:
free -h
A saída mostra total, usada, livre, buffers/cache e disponível. A opção -h formata valores legíveis (GB, MB).
Para identificar os 5 processos que mais consomem CPU:
top -o %CPU -b -n 1 | head -20
A opção -o %CPU ordena por uso de CPU, -b ativa modo batch para scripts.
4. Monitoramento de disco e sistema de arquivos com df e du
Verificar espaço em disco é fundamental para evitar interrupções:
df -h
Mostra todas as partições montadas com uso percentual. Para verificar inodes (arquivos):
df -i
Partições com 100% de inodes podem falhar mesmo com espaço livre.
Para analisar quais diretórios consomem mais espaço:
du -sh /var/log
Para uma visão hierárquica:
du -h --max-depth=1 /home
Combinando com sort:
du -h --max-depth=1 / | sort -rh | head -10
Isso lista os 10 maiores diretórios na raiz.
5. Monitoramento de rede com netstat, ss e iftop
O netstat é clássico para verificar portas e conexões:
netstat -tuln
-t: conexões TCP-u: conexões UDP-l: apenas sockets ouvindo-n: endereços numéricos
A alternativa moderna ss é mais rápida:
ss -tuln
Para tráfego em tempo real por interface:
sudo iftop -i eth0
Caso iftop não esteja disponível, nload é uma boa alternativa:
sudo nload eth0
6. Monitoramento de I/O de disco com iostat e iotop
O iostat faz parte do pacote sysstat. Para instalar:
sudo apt install sysstat # Debian/Ubuntu
Monitoramento contínuo com intervalo de 1 segundo:
iostat -x 1
Métricas importantes:
- await: tempo médio de resposta (ms) — alto indica contenção
- svctm: tempo médio de serviço (ms)
- %util: percentual de tempo que o disco esteve ocupado
Para identificar processos específicos com alta I/O:
sudo iotop
Use as teclas o para mostrar apenas processos com I/O ativo e P para ordenar por I/O de leitura/escrita.
7. Logs e diagnóstico de processos com dmesg, journalctl e strace
Mensagens do kernel são acessadas via dmesg:
dmesg | tail -20
Útil para detectar erros de hardware ou disco.
Logs do systemd podem ser consultados por serviço:
journalctl -u nginx.service --since "1 hour ago"
Para rastrear chamadas de sistema de um processo em execução:
strace -p 1234
Substitua 1234 pelo PID. Para salvar em arquivo:
strace -p 1234 -o /tmp/strace.log
O strace é uma ferramenta poderosa para depuração, mas deve ser usada com cautela em produção, pois pode degradar o desempenho.
8. Automatização e scripts de monitoramento com ferramentas nativas
O comando watch repete um comando em intervalos regulares:
watch -n 2 'ps aux --sort=-%cpu | head -10'
Isso atualiza a cada 2 segundos mostrando os 10 processos com maior uso de CPU.
Para gerar alertas simples com scripts:
#!/bin/bash
USO=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$USO" -gt 90 ]; then
echo "ALERTA: Disco raiz com $USO% de uso" | mail -s "Alerta de disco" admin@exemplo.com
fi
Para salvar logs de monitoramento automaticamente, configure um cron job:
*/5 * * * * /usr/bin/free -h >> /var/log/memoria.log
Isso registra o uso de memória a cada 5 minutos.
Referências
- Documentação oficial do comando top — Manual completo do top com todas as opções e interações.
- Guia prático do comando ps no Linux — Exemplos detalhados de uso do ps para listar e filtrar processos.
- Documentação do sysstat (iostat, sar, mpstat) — Repositório oficial com documentação e exemplos de uso do iostat e outras ferramentas.
- Guia do comando ss para sockets Linux — Tutorial da Red Hat sobre o comando ss moderno para monitoramento de rede.
- Documentação do journalctl — Manual oficial do systemd-journald para consulta de logs.
- Tutorial de strace para depuração de processos — Exemplos práticos de rastreamento de chamadas de sistema com strace.
- Guia de monitoramento de disco com df e du — Exemplos avançados de df e du para análise de espaço em disco.