我设置了3个crontab作业,每分钟、5分钟和每小时定期执行简单的ruby脚本。他们执行,但他们什么也不做。我在机器上只有一个用户(root),我通过执行命令crontab -e来设置crontab。crontab -l列出了我当前的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我可以看到它们执行,但没有在正确的时间间隔,而且他们什么也不做,而如果我手动执行那些红宝石文件,他们的工作非常好。我可以确认ruby程序100%运行良好,它们通过测试等。以下是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)我在这里错过了什么?
发布于 2017-12-06 17:36:01
您没有将这些任务设置为每分钟、每5分钟和每小时运行一次。这三种方法都设置为每小时运行一次,时间为:1 :01 /小时后,05 :00 /小时后,和:00:00。相反,你可以尝试这样的方法
* * * * * 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'发布于 2017-12-06 17:21:18
通常,您会发现这是一个环境问题。从cron运行脚本不会执行/etc/profile脚本。您可以在脚本开始时源/etc/profile,或者只设置脚本所需的变量(PATH是一个快速出现在脑海中的变量)。
我建议创建一个运行env命令的小脚本,并将其输送到一个文件中,这样您就可以准确地看到您的环境在从cron运行时是什么环境。应该能帮你找到不需要设置的东西。
https://unix.stackexchange.com/questions/409257
复制相似问题