Criando Cron Jobs Mais Avançados
Agora que você entende o básico, vamos criar um cron job mais avançado que registra informações do sistema.
Vamos criar um cron job que registrará informações sobre o uso de memória do sistema a cada hora. Esse tipo de monitoramento pode ser útil para rastrear o desempenho do sistema ao longo do tempo.
Primeiro, vamos criar um script shell que coletará as informações de memória:
nano ~/project/memory_check.sh
No editor nano, adicione o seguinte conteúdo:
#!/bin/bash
echo "Memory check at $(date)" >> ~/project/memory_log.txt
free -m >> ~/project/memory_log.txt
echo "--------------------" >> ~/project/memory_log.txt
Este script irá:
- Adicionar um timestamp (carimbo de data/hora) ao log
- Executar o comando
free -m para exibir o uso de memória em megabytes
- Adicionar uma linha separadora para legibilidade
Salve e saia do editor (pressione Ctrl+O, Enter e, em seguida, Ctrl+X).
Agora, torne o script executável:
chmod +x ~/project/memory_check.sh
Você pode testar o script para garantir que ele funcione corretamente:
~/project/memory_check.sh
Verifique o arquivo de saída:
cat ~/project/memory_log.txt
Você deve ver uma saída que inclui o timestamp, informações de uso de memória e uma linha separadora.
Agora, vamos agendar este script para ser executado a cada hora usando o crontab:
crontab -e
Adicione a seguinte linha (mantendo seu cron job existente):
0 * * * * ~/project/memory_check.sh
Isso executará o script de verificação de memória no início de cada hora. Salve e saia do editor.
Para verificar se o novo cron job foi adicionado:
crontab -l
Você deve ver ambos os cron jobs:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
Usando Strings de Tempo Especiais
O Cron também suporta algumas strings de tempo especiais para padrões de agendamento comuns:
@hourly - O mesmo que 0 * * * *
@daily - O mesmo que 0 0 * * *
@weekly - O mesmo que 0 0 * * 0
@monthly - O mesmo que 0 0 1 * *
@reboot - Executar na inicialização do sistema
Vamos adicionar um job que é executado diariamente usando essas strings especiais:
crontab -e
Adicione a seguinte linha:
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
Salve e saia do editor. Isso criará uma nova entrada no arquivo daily_check.txt uma vez por dia à meia-noite.
Para verificar se o novo cron job foi adicionado:
crontab -l
Você deve ver agora todos os três cron jobs:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
Gerenciando a Saída do Cron Job
Por padrão, o cron envia qualquer saída dos jobs para o e-mail do usuário. Se você quiser descartar a saída completamente, você pode redirecioná-la para /dev/null:
*/10 * * * * ~/project/some_script.sh > /dev/null 2>&1
Esta é uma prática comum para scripts que produzem saída que você não precisa manter.