Os trabalhos do Cron não funcionam como esperado

1

Eu configurei 3 tarefas do crontab para executar meus scripts ruby simples periodicamente a cada minuto, 5 minutos e hora. Eles executam, porém eles não fazem nada. Eu tenho apenas um usuário na máquina ( root ) e configurei o crontab executando o comando crontab -e . crontab -l lista meus trabalhos atuais do crontab:

5 * * * * ruby /root/www/server-monitoring/current/tasks/cpu_check.rb
0 * * * * ruby /root/www/server-monitoring/current/tasks/free_disk_space.rb
1 * * * * ruby /root/www/server-monitoring/current/tasks/free_ram_check.rb

Eu posso ver que eles são executados, mas não nos intervalos certos e também não fazem nada, enquanto se eu executar esses arquivos ruby manualmente eles funcionam perfeitamente. Posso confirmar que os programas ruby funcionam bem 100%, passam por testes, etc. Aqui estão os logs do crontab:

Dec  6 15:45:01 monitoring-jedrzej CRON[28281]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 15:55:01 monitoring-jedrzej CRON[28478]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 16:00:01 monitoring-jedrzej CRON[28584]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/free_disk_space.rb)
Dec  6 16:01:01 monitoring-jedrzej CRON[28614]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/free_ram_check.rb)
Dec  6 16:05:01 monitoring-jedrzej CRON[28702]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/cpu_check.rb)
Dec  6 16:05:01 monitoring-jedrzej CRON[28703]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 16:15:01 monitoring-jedrzej CRON[29214]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

O que estou perdendo aqui?

    
por jedi 06.12.2017 / 17:59

2 respostas

1

Você não definiu esses trabalhos para serem executados a cada minuto, a cada 5 minutos e a cada hora. Todos os três estão configurados para serem executados uma vez por hora, em: 01 após a hora,: 05 após a hora e: 00 após a hora. Em vez disso, você pode tentar algo como

* * * * *    echo 'run every minute'
*/5 * * * *  echo 'run every 5 minutes'
0,5,10,15,20,25,30,35,40,45,50,55 * * * *   echo 'alternate every-five-minute'
0 * * * *    echo 'run every hour on the hour'
    
por 06.12.2017 / 18:36
2

Geralmente, você descobrirá que isso é um problema de ambiente. Executar um script do cron NÃO executa o script /etc/profile . Você pode obter /etc/profile no início do script ou definir apenas as variáveis necessárias para o seu script ( PATH é algo que vem rapidamente à mente).

Sugiro criar um script pequeno que execute o comando env e canalize isso para um arquivo para que você possa ver exatamente o que é seu ambiente ao executar algo do cron. Deve ajudá-lo a encontrar o que não está definido que precisa ser.

    
por 06.12.2017 / 18:21

Tags