好的,我有一个 php 脚本需要每 15 分钟执行一次,但这样不行。我的其他脚本都可以正常执行,我可以通过命令行执行它。
# m h dom mon dow command
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
* 10 * * 0 php /var/www/html/slack/huiswerk_reminder/runner.php
* 17 * * 1 php /var/www/html/slack/huiswerk_reminder/runner.php
* 17 * * 2 php /var/www/html/slack/huiswerk_reminder/runner.php
* 14 * * 3 php /var/www/html/slack/huiswerk_reminder/runner.php
* 16 * * 4 php /var/www/html/slack/huiswerk_reminder/runner.php
*/15 * * * * php /var/www/html/slack/cijfercheck/cijfercheck.php
只是*/15 * * * * php /var/www/html/slack/cijfercheck/cijfercheck.php
不会被执行。我做错了什么?
我已采取以下步骤尝试修复它:
将 */15 更改为 0,15,30,45
并研究了以下所有问题:
https://stackoverflow.com/questions/32393740/cronjob-not-executing-php
https://stackoverflow.com/questions/5784573/cronjobs-not-executing-php-scripts-no-mailto-warnings-received
https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work
https://askubuntu.com/questions/93313/cron-job-not-running
为什么我的 crontab 不工作?我该如何排除故障?
一切都不起作用,奇怪的是,其他的都工作正常,没有任何问题...
那么我做错了什么?
答案1
crontab 末尾需要一个空行,否则它将无法工作。此外,请尝试在脚本前添加 #!/bin/bash,以确保它们在 BASH 中运行,而不是在其它 shell 中运行。
如果这不起作用,那么您可以尝试卸载到.sh 脚本:
*/15 * * * * $HOME/sched.sh >> $HOME/log_sched 2>>$HOME/error_sched
然后将其填写为 BASH 脚本:
#!/bin/bash
php5 /var/www/html/slack/cijfercheck/cijfercheck.php &&
echo FINISHED AT $(date +"%T")