Cron 作业未运行

Cron 作业未运行

我可以从 CLI 运行此命令,在 Fedora 机器上没有问题,但不能从 Cron 运行:

/usr/bin/php /var/www/support_web/api/cron.php

这是 cron 输出:

命令 /usr/bin/php /var/www/support_web/api/cron.php 的输出..

77

文件具有执行权限。

Crontab 日志:

Jun 11 11:46:20 www crontab[23453]: (root) BEGIN EDIT (root)
Jun 11 11:46:21 www crontab[23453]: (root) REPLACE (root)
Jun 11 11:46:21 www crontab[23453]: (root) END EDIT (root)
Jun 11 11:47:01 www crond[2479]: (*system*) WRONG FILE OWNER (/etc/crontab)
Jun 11 11:47:01 www crond[2479]: (*system*) WRONG FILE OWNER (/etc/cron.d/smolt)
Jun 11 11:47:01 www crond[2479]: (root) RELOAD (cron/root)

答案1

您是否使用同一用户从 CLI 和 cron 运行它?如果您以普通用户身份从 CLI 运行它,并以 root 用户身份从 cron 运行它,root 可能缺少 cron.php 所需的某些环境变量。

您可以尝试从 root cron 运行以下命令:

su - userToRunAs -c "/usr/bin/php /var/www/support_web/api/cron.php"

答案2

cron 文件必须具有 root/root 的用户/组(/etc/cron* 和 /etc/cron.{daily,hourly,etc}/* 必须由 root 拥有,否则其中的脚本将不会启动。

我不知道 /var/spool/cron/$username 下的个人 crontab。不过,我的个人经验表明它是 root/“用户组”

还有一些权限要求,但我不知道这些要求是什么。不过我知道 755 可以工作。

答案3

很难确切地说,但它可能是您在交互式 shell 中设置的环境变量,但 cron 并未设置该变量。在 cron.php 中放入一些打印语句,打印出任何依赖的环境变量,这样您就可以查看它是否已正确设置。

如果失败,请添加更多打印语句来查看发生了什么。

答案4

例如,如果脚本位于cron.daily文件自动执行的目录中,则某些实现cron始终使用 运行它们,而sh不管 shebang 是什么。尝试创建简单的sh脚本,只需调用 即可/usr/bin/php /var/www/support_web/api/cron.php

相关内容