我不明白为什么 cron 实际上不是每 10 分钟执行一次命令。
我crontab -e
添加了:
*/10 * * * * /var/www/myproject/recording/batch.pl
我可以在 cron 日志中看到它每 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 控制台中手动执行该命令时,它运行正常。
答案1
如何像这样设置你的 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 来跟踪正在运行的
答案2
CRON 不会继承您的所有环境变量。某些软件必须手动调用(即:如果您没有有效的 $PATH 环境变量,则调用ifconfig
或不相等)。/sbin/ifconfig
还要确保它是可执行的,并且你的 shebang 被正确定义(否则你必须在解释器前面添加你的命令)。
答案3
正如 CloudWeavers 所说,这很可能与缺少的环境变量有关,要检查到底缺少什么,您可以编辑 cronjob 以将其所有标准输出/错误记录到日志文件中,以便您可以查看它以了解是什么阻止了它:
*/10 * * * * /var/www/myproject/recording/batch.pl &> output.log