为什么我的 cronjob 没有运行?

Tom*_*Tom 3 linux selinux centos pam cron

我有一个/etc/cron.d/mycron看起来像这样的 cronjob :

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

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

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

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

对此问题的任何想法或经验以及解决方案可能是什么?

谢谢

Tva*_*tom 6

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

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

HOME=/tmp
0 3 * * *         apache    /usr/bin/php /path/to/my/script.php
Run Code Online (Sandbox Code Playgroud)