为什么我的cronjob没有运行?

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

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

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

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

  • apache用户没有主目录(其他cron用户),而crond不喜欢这个。
  • 有一些PAM或者/etc/security/access.conf设置使用crond来阻塞apache,尽pipe/etc/security/access.conf被完全注释掉了。
  • SELinux – 这通常是一个问题似乎很奇怪的罪魁祸首。

这个问题的任何想法或经验,以及解决scheme可能是什么?

谢谢

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

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

您可能需要提供PATH = / usr / bin /,或者指定命令的完整path。

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

默认情况下, cron运行的PATH非常有限; 你需要把完整的path到php二进制文件?