Monitorando o sistema
Nesta aula, você aprenderá a monitorar o sistema Linux usando comandos essenciais como top, htop, free, df, du e uptime. Exploraremos cada comando em detalhes, com exemplos práticos e boas práticas para interpretar as informações e manter o sistema saudável.
Bem-vindo à aula 52 do nosso curso de Shell Script! Hoje vamos mergulhar no monitoramento de sistemas Linux, uma habilidade crucial para qualquer administrador ou usuário avançado. Saber como verificar o desempenho do sistema, a utilização de memória, o espaço em disco e o tempo de atividade não só ajuda a diagnosticar problemas, mas também a otimizar recursos e planejar atualizações.
Vamos explorar cinco comandos fundamentais: top, htop, free, df, du e uptime. Cada um fornece uma visão específica do sistema, e juntos eles formam um kit de ferramentas essencial para qualquer profissional de TI. Ao longo da aula, você verá exemplos práticos, opções úteis e dicas para interpretar as saídas corretamente.
top e htop
O comando top é um dos utilitários mais antigos e poderosos para monitorar processos em tempo real. Ele exibe uma lista dinâmica de processos, ordenada por uso de CPU, além de informações resumidas sobre o sistema, como carga média, número de tarefas e uso de memória. Para iniciá-lo, basta digitar top no terminal. A interface é interativa: você pode pressionar teclas para classificar por memória (M), por PID (N), matar processos (k), entre outras opções. O top é ideal para uma visão rápida e leve, pois está disponível em praticamente todas as distribuições Linux.
O htop é uma alternativa mais amigável e colorida. Ele oferece uma interface visual com barras de progresso, uso de cores para diferenciar tipos de processos e suporte a mouse. Além disso, permite rolagem vertical e horizontal, facilitando a navegação em sistemas com muitos processos. Para instalar, use o gerenciador de pacotes da sua distro (ex.: sudo apt install htop no Ubuntu). Enquanto top é mais leve e scriptável, htop é excelente para uso interativo. Em scripts, é comum usar top em modo batch (top -b -n 1) para gerar uma única saída, enquanto htop é menos adequado para automação.
Exemplo de uso do top em modo batch para capturar a saída em um arquivo:
top -b -n 1 > /tmp/top_output.txt
cat /tmp/top_output.txtNo htop, você pode pressionar F6 para escolher o critério de ordenação, F9 para matar um processo, e F10 para sair. A barra superior mostra medidores de CPU, memória e swap, além da carga média.
free
O comando free é essencial para verificar o uso de memória RAM e swap. Ele exibe a quantidade total, usada e livre de memória física, além da memória de troca (swap). A saída padrão é em kibibytes, mas você pode usar -h para formato legível por humanos, -m para megabytes ou -g para gigabytes. O comando é simples e direto, ideal para scripts de monitoramento.
Entender a diferença entre memória usada e memória disponível é crucial. O Linux usa memória para cache de arquivos, o que pode parecer "usada", mas na verdade é memória disponível para aplicativos quando necessário. A coluna available (disponível) já considera isso. Exemplo de uso:
free -hSaída típica:
total used free shared buff/cache available
Mem: 7.6Gi 2.1Gi 1.2Gi 89Mi 4.3Gi 5.0Gi
Swap: 2.0Gi 0.0B 2.0GiNesse exemplo, o sistema tem 7,6 GB de RAM, com 5,0 GB disponíveis para novos aplicativos. O cache de arquivos (buff/cache) usa 4,3 GB, mas pode ser liberado se necessário.
df e du
O comando df (disk free) mostra o espaço em disco disponível e usado em cada sistema de arquivos montado. É útil para verificar se um disco está cheio. Use df -h para saída legível. Exemplo:
df -hO comando du (disk usage) é usado para estimar o espaço ocupado por arquivos e diretórios. Por exemplo, du -sh /var/log mostra o tamanho total do diretório /var/log de forma resumida. Combinado com sort, você pode identificar quais diretórios consomem mais espaço. Exemplo:
du -sh /home/* | sort -hIsso lista o tamanho de cada diretório em /home, ordenado do menor para o maior. Para encontrar arquivos grandes, você pode usar du -a ou combinar com find.
uptime
O comando uptime mostra há quanto tempo o sistema está em execução, o número de usuários logados e a carga média do sistema em 1, 5 e 15 minutos. A carga média é um indicador importante: valores altos podem significar sobrecarga de CPU ou espera de I/O. Em sistemas com múltiplos núcleos, uma carga de 1,0 pode ser aceitável, mas em um sistema de um núcleo, isso indica utilização total. Exemplo:
uptimeSaída:
10:30:12 up 3 days, 4:05, 2 users, load average: 0.08, 0.03, 0.01Nesse caso, o sistema está ativo há 3 dias, com carga média baixa, indicando ocioso. Para monitorar a carga ao longo do tempo, você pode usar watch uptime ou integrar em scripts.
Boas práticas e observações finais
Ao monitorar o sistema, é importante combinar várias métricas para ter uma visão completa. Por exemplo, alta carga média pode ser causada por processos em estado D (uninterruptible sleep), que podem indicar problemas de I/O. Use top para identificar esses processos. Além disso, crie scripts que coletem essas informações periodicamente e as registrem em logs para análise posterior. Ferramentas como sar ou sysstat podem ser úteis, mas os comandos básicos são o ponto de partida.
Lembre-se de que o monitoramento proativo ajuda a evitar indisponibilidades. Estabeleça alertas para quando o uso de disco ou memória atingir limites críticos. Você pode usar cron para executar scripts de verificação e enviar notificações por e-mail ou mensageiro.
Referências
- top(1) - Linux manual page
- htop(1) - Linux manual page
- free(1) - Linux manual page
- df(1) - Linux manual page
- du(1) - Linux manual page
- uptime(1) - Linux manual page
- GNU Coreutils manual
Exercícios
- Execute o comando
topem modo batch e salve a saída em um arquivo. Em seguida, exiba as primeiras 10 linhas do arquivo. Qual é o processo que mais consome CPU? - Use o comando
free -hpara verificar a memória. Explique o que significam as colunas 'used', 'free' e 'available' e por que 'available' é mais relevante para saber se há memória suficiente para novos programas. - Encontre o diretório que mais consome espaço dentro do seu diretório home usando
du. Liste os 3 maiores diretórios em ordem decrescente. - Usando o
uptime, verifique a carga média do sistema. Se a carga média em 1 minuto for maior que o número de núcleos da CPU, o que isso indica? Como você pode confirmar se há processos em estado D (uninterruptible sleep)? - Escreva um script em shell que verifique se o uso de disco da partição raiz (/) está acima de 80% e imprima uma mensagem de alerta. Use
dfeawkpara extrair a porcentagem.
top -b -n 1 > /tmp/top.txt e depois head -10 /tmp/top.txt. O primeiro processo na lista (geralmente o primeiro após o cabeçalho) é o que mais consome CPU. A resposta exata depende do sistema, mas você deve identificar o PID e o nome.du -h --max-depth=1 ~ | sort -hr | head -3 para listar os maiores diretórios. A resposta varia, mas o comando mostrará os três primeiros.top e observe a coluna 'S' (estado) ou use ps aux | awk '$8 ~ /D/' para listar processos com estado D.#!/bin/bash
uso=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $uso -gt 80 ]; then
echo "Alerta: uso de disco em / está em $uso%"
fi