为何我的 cronjob 没有运行?

为何我的 cronjob 没有运行?

/etc/cron.d/mycron我有一个如下所示的cronjob :

0 3 * * * apache php /path/to/my/script.php

在同一个文件中,其他 cronjobs 开始以 root 和其他用户身份运行(可以工作),但由于某种原因,这个以 apache 身份运行的作业没有运行,也没有在 cron 文件中报告任何内容/var/log/messages或向其中的MAILTO地址发送任何内容。当我su apache运行 cronjob 的命令时,它工作正常,但 cron 不喜欢它。

这对我来说是一个长期存在的问题,到目前为止我已经收集了以下可能性:

  • apache 用户没有主目录(其他 cron 用户有),并且 crond 不喜欢这样。
  • 有一些 PAM 或/etc/security/access.conf设置使用 crond 阻止 apache,尽管/etc/security/access.conf已被完全注释掉。
  • SELinux——当问题看起来非常奇怪时,这通常是罪魁祸首。

对于这个问题有什么想法或经验吗?解决办法是什么?

谢谢

答案1

  • 尝试在 cron 配置中使用 php 的完整路径:/usr/bin/php
  • 检查 apache 主目录:grep apache /etc/passwd据我所知,用户应该始终有主目录。它可能不在 /home 中。
  • 检查有关安全事件的系统日志消息。如果这是 PAM,你会看到一些
  • 尝试禁用 SELinux

答案2

必须为用户设置主目录。如果用户没有主目录,您可以直接在 cron.d 文件中指定。

您可能还需要提供 PATH=/usr/bin/,或者为命令指定完整路径。

HOME=/tmp
0 3 * * *         apache    /usr/bin/php /path/to/my/script.php

答案3

cron默认情况下运行非常有限PATH;您需要输入php二进制文件的完整路径吗?

相关内容