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:
- -b — modo batch, necessário para redirecionar a saída para um arquivo.
- -n 1 — executa uma única iteração de atualização e finaliza.
- > /home/user/logs/top_output.txt — grava os dados no arquivo especificado.
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:
- -n 5 — executa 5 iterações de atualização.
- -d 4 — define um atraso de 4 segundos entre as atualizações.
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:
- É executado a cada 5 minutos, das 5:00 às 6:00.
- Executa o top por 10 iterações, com um atraso de 4 segundos entre as atualizações.
- Cria um arquivo separado com um timestamp para facilitar a análise dos dados.
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.