Monitorando o sistema
Nesta aula, você aprenderá a monitorar o sistema Linux usando comandos essenciais como top, htop, free, df, du e uptime, com explicações detalhadas, exemplos práticos e boas práticas para manutenção e diagnóstico de desempenho.
Monitorar o sistema é uma tarefa fundamental para qualquer administrador de sistemas ou desenvolvedor que queira garantir que seus serviços estejam rodando de forma eficiente e estável. Nesta aula, vamos explorar os comandos mais utilizados para acompanhar o desempenho da máquina, verificar o uso de memória, disco e tempo de atividade, além de entender como interpretar as informações fornecidas por essas ferramentas.
Dominar esses comandos é essencial para diagnosticar problemas, otimizar recursos e tomar decisões informadas sobre a infraestrutura. Vamos começar com os utilitários de monitoramento de processos e carga, depois passaremos para a análise de memória e disco, finalizando com o uptime, que mostra a estabilidade do sistema.
top e htop
O comando top é uma ferramenta clássica do Linux que fornece uma visão em tempo real dos processos em execução, uso de CPU, memória e outros recursos. Ao executar top no terminal, você verá uma tabela dinâmica que se atualiza a cada poucos segundos, mostrando informações como PID, usuário, %CPU, %MEM e o comando que originou cada processo. É uma ferramenta poderosa para identificar processos que estão consumindo muitos recursos, mas sua interface é um pouco rudimentar.
O htop é uma alternativa moderna e mais amigável, com cores, barras de progresso e suporte a mouse. Ele permite navegar pelos processos com as setas do teclado, matar processos diretamente com a tecla F9, e até mesmo mudar a prioridade de execução. Embora não venha instalado por padrão em todas as distribuições, pode ser facilmente instalado com o gerenciador de pacotes, por exemplo, sudo apt install htop no Ubuntu.
Ambos os comandos são essenciais para monitoramento em tempo real. Para sair do top, pressione q. No htop, também pressione q ou F10. Para ordenar por CPU no top, pressione P; por memória, M. No htop, você pode clicar nas colunas para ordenar.
# Exemplo de uso do top em modo batch (uma única atualização)
top -b -n 1 | head -20
# Exemplo de uso do htop (interativo)
htopfree
O comando free é usado para exibir a quantidade de memória física e de swap (troca) utilizada e disponível no sistema. Ele é essencial para verificar se há memória suficiente para as aplicações ou se o sistema está usando swap em excesso, o que pode indicar falta de RAM. Por padrão, o free mostra os valores em kibibytes, mas com a opção -h podemos visualizar em formato legível para humanos (GB, MB).
A saída do free contém informações sobre a memória total, usada, livre, compartilhada, disponível para buffer/cache e a memória swap. É importante entender a diferença entre memória usada e memória disponível: o Linux utiliza parte da memória para cache de arquivos, o que é benéfico, e essa memória é considerada 'disponível' quando necessário. Portanto, não se assuste se a memória livre for baixa, pois o sistema está fazendo uso inteligente dos recursos.
Para um monitoramento contínuo, você pode usar watch -n 2 free -h, que atualiza a cada 2 segundos.
# Exemplo de uso do free
free -hdf 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 os discos estão cheios, o que pode causar falhas em serviços. A opção -h apresenta os valores em formato legível. Para listar apenas os sistemas de arquivos de interesse, você pode usar df -h /home ou df -hT para incluir o tipo de sistema de arquivos.
Já o comando du (disk usage) estima o espaço usado por arquivos e diretórios. É fundamental para identificar quais diretórios estão consumindo mais espaço. Por exemplo, du -sh /var/log mostra o total usado pelo diretório de logs. O -s resume o total, e o -h torna legível. Combinando du com sort e head, podemos descobrir os maiores diretórios: du -h --max-depth=1 /var | sort -hr | head.
Esses comandos são essenciais para o gerenciamento de espaço em disco, prevenindo problemas de falta de espaço e identificando arquivos grandes que podem ser removidos ou movidos.
# Exemplo de uso do df
df -h
# Exemplo de uso do du para descobrir o tamanho de um diretório
du -sh /var/log
# Para listar os 10 maiores diretórios em /var
du -h --max-depth=1 /var | sort -hr | head -10uptime
O comando uptime mostra há quanto tempo o sistema está em execução, quantos usuários estão logados e a carga média do sistema (load average) nos últimos 1, 5 e 15 minutos. A carga média indica a demanda média de CPU, onde um valor igual ao número de núcleos significa que o sistema está totalmente ocupado; valores acima indicam sobrecarga.
Interpretar o load average é crucial para avaliar a saúde do sistema. Por exemplo, em um servidor com 4 CPUs, um load de 4.00 significa uso total, enquanto 8.00 indica que há processos esperando, o que pode degradar o desempenho. O uptime é frequentemente usado em scripts de monitoramento para alertar sobre cargas altas.
Para uma visão mais detalhada, você pode usar cat /proc/loadavg, que fornece os mesmos dados de forma mais direta.
# Exemplo de uso do uptime
uptime
# Também é possível ver a carga média em /proc/loadavg
cat /proc/loadavgBoas práticas e observações finais
Ao monitorar o sistema, é importante criar uma rotina de verificação periódica, seja manualmente ou automatizando com scripts e ferramentas como cron. Registrar o desempenho ao longo do tempo ajuda a identificar tendências e a planejar upgrades de hardware. Além disso, combine esses comandos com outras ferramentas como ps, iostat e netstat para uma análise mais completa.
Lembre-se de que muitos desses comandos podem ser usados em scripts para gerar relatórios. Por exemplo, você pode redirecionar a saída do free para um arquivo de log com timestamp. Sempre consulte as páginas de manual (man top, man free, etc.) para explorar todas as opções disponíveis.
Referências
- Página de manual do top
- Página de manual do free
- Página de manual do df
- Página de manual do du
- Página de manual do uptime
- Página de manual do htop
Exercícios
- Explique a diferença entre os comandos
topehtop. Em que situação você preferiria um ao outro?✓ Resposta: Otopé uma ferramenta tradicional, disponível na maioria dos sistemas, com interface simples e sem dependências extras. Ohtopé uma versão melhorada, com interface colorida, navegação interativa e suporte a mouse, facilitando a identificação e gerenciamento de processos. Prefirahtopquando você precisa de uma visualização mais amigável e interativa; usetopem servidores mínimos ou quando não puder instalar pacotes extras. - O comando
free -hmostrou que a memória usada é alta e a livre é baixa. Isso é necessariamente um problema? Justifique.✓ Resposta: Não necessariamente. O Linux usa memória livre para cache e buffers de arquivos, melhorando o desempenho. O comandofreemostra a memória 'disponível' que pode ser liberada para aplicações. Se a memória disponível estiver baixa e o sistema estiver usando swap constantemente, aí sim pode ser um problema. É importante analisar a coluna 'available' e o uso de swap. - Escreva um comando que mostre o espaço em disco de todos os sistemas de arquivos em formato legível e inclua o tipo de sistema de arquivos.✓ Resposta: O comando é:
df -hT. A opção-Texibe o tipo de sistema de arquivos, e-htorna os valores legíveis (ex.: 10G, 500M). - Como você faria para descobrir quais diretórios estão ocupando mais espaço em /home? Escreva um comando que liste os 5 maiores diretórios imediatamente abaixo de /home.✓ Resposta: O comando é:
du -h --max-depth=1 /home | sort -hr | head -5. A opção--max-depth=1limita a profundidade a um nível,sort -hrordena os valores de forma reversa (maior primeiro) ehead -5mostra os 5 primeiros. - O que o comando
uptimeinforma além do tempo de atividade? Como interpretar a carga média em um sistema com 8 núcleos?✓ Resposta: Ouptimetambém mostra o número de usuários logados e a carga média do sistema nos últimos 1, 5 e 15 minutos. Em um sistema com 8 núcleos, uma carga média de 8.0 indica que todos os núcleos estão ocupados; valores consistentemente acima de 8.0 indicam sobrecarga, enquanto abaixo de 8.0 sugere que há recursos ociosos.