28.03.2025

Salvando a saída do comando top em um arquivo no Linux

O comando top é uma ferramenta poderosa para monitoramento de processos no Linux, permitindo acompanhar em tempo real a carga da CPU, o uso de memória e outros parâmetros do sistema. No entanto, em alguns casos, é necessário salvar os dados para análise posterior, especialmente ao identificar picos de carga de curta duração ou rastrear a atividade de processos específicos.

Este artigo explora vários métodos para salvar a saída do top em um arquivo, além de automatizar o processo usando o Cron.

1. Salvando a saída do comando top uma única vez

Se você precisa capturar o estado atual do sistema apenas uma vez, pode usar o seguinte comando:

top -b -n 1 > /home/user/logs/top_output.txt

Onde:

2. Salvando múltiplas iterações da saída do top

Para analisar mudanças no sistema ao longo do tempo, é possível executar o top em várias iterações com um intervalo de atraso:

top -n 5 -d 4 -b > /home/user/logs/top_output_5_iter.txt

Onde:

3. Automatizando a coleta de dados com o Cron

Se você precisa salvar regularmente informações sobre a carga do sistema, o uso do agendador de tarefas Cron é a melhor opção. Abaixo estão alguns cenários de automação.

3.1. Salvando a saída do top a cada 5 minutos por uma hora

Por exemplo, para coletar dados dos processos a cada 5 minutos durante uma hora (das 5:00 às 6:00 da manhã), adicione o seguinte cron job:

0-59/5 5 * * * top -n 10 -d 4 -b > /home/user/logs/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt

Este cron job:

3.2. Acrescentando dados do top a um único arquivo

Se for necessário gravar os dados em um único arquivo, em vez de criar novos, use >> em vez de > , o que adicionará os resultados ao arquivo existente:

0-59/5 9 * * * top -b -n5 -d 5 >> /home/user/logs/aggregated_top_output.txt

3.3. Salvando a saída do top a cada 5 minutos por 30 minutos

Para coletar informações apenas dentro de um intervalo de tempo específico, por exemplo, das 13:30 às 14:00, use o seguinte cron job:

30-59/5 13 * * * top -n 10 -d 4 -b > /home/user/logs/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt

4. Dicas adicionais

4.1. Filtrando a saída do top

Se você precisa apenas dos dados de processos específicos, pode usar o grep. Por exemplo, para salvar somente informações sobre o processo nginx:

top -b -n 1 | grep nginx > /home/user/logs/nginx_top_output.txt

4.2. Usando awk para extrair dados-chave

Se você estiver interessado apenas no uso da CPU e da memória, pode filtrar a saída com awk:

top -b -n 1 | awk '/Cpu/ || /Mem/' > /home/user/logs/cpu_mem_usage.txt

Conclusão

Salvar a saída do comando top em um arquivo permite analisar a carga do sistema em diferentes momentos e identificar gargalos. O uso do Cron ajuda a automatizar o processo, enquanto a filtragem possibilita focar nos dados mais relevantes.

Essa abordagem é excelente para monitoramento do sistema, especialmente para diagnosticar picos temporários de carga ou realizar análises de desempenho a longo prazo.

Ao aplicar esses métodos, você pode facilmente adaptá-los às suas necessidades e criar um sistema eficiente de coleta e análise de dados.