我不明白为什么cron不是每隔10分钟就真的执行一次命令。
在crontab -e我添加了:
*/10 * * * * /var/www/myproject/recording/batch.pl
我可以在cron log中看到它每10分钟运行一次:
Mar 17 10:50:01 host crond[26335]: (root) CMD (/var/www/myproject/recording/batch.pl) Mar 17 11:00:01 host crond[26357]: (root) CMD (/var/www/myproject/recording/batch.pl) Mar 17 11:10:01 host crond[26418]: (root) CMD (/var/www/myproject/recording/batch.pl) Mar 17 11:20:01 host crond[26657]: (root) CMD (/var/www/myproject/recording/batch.pl)
但并不是真正执行命令。
当我在Linux控制台手动执行该命令时,它工作正常。
如何设置你的crontab这样的
*/10 * * * * /usr/bin/perl /var/www/myproject/recording/batch.pl 2>&1 | tee -a /var/log/myproject-recording-batch.log
那么您可以尾随日志文件/var/log/myproject-recording-batch.log来跟踪运行
CRON不会inheritance所有的环境variables。 某些软件必须手动调用(即:如果没有有效的$ PATH环境variables,则调用ifconfig或/sbin/ifconfig不等于)。
还要确保它是可执行的,并且你的shebang是正确定义的(否则你必须在解释器前面加上你的命令)。
正如CloudWeavers所说,它大部分是关于一个缺less的环境variables,为了检查究竟是什么遗漏,你可以编辑cronjob把所有的标准输出/错误logging到一个日志文件中,这样你就可以检查它以得到什么阻止它:
*/10 * * * * /var/www/myproject/recording/batch.pl &> output.log