Linux
為什麼我的 cronjob 沒有執行?
我有一個 cronjob
/etc/cron.d/mycron
,看起來像這樣:
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 - 當問題看起來很奇怪時,這通常是罪魁禍首。
對此問題有任何想法或經驗以及解決方案可能是什麼?
謝謝
- 嘗試在 cron 配置中使用 php 的完整路徑:
/usr/bin/php
- 檢查 apache 主目錄:
grep apache /etc/passwd
據我所知,使用者應該始終擁有主目錄。它可能不在 /home 中。- 檢查有關安全事件的系統日誌消息。如果這是 PAM,你會看到一些東西
- 嘗試禁用 SELinux
必須為使用者設置主目錄。如果使用者沒有,您可以直接在 cron.d 文件中指定它。
您可能還需要提供 PATH=/usr/bin/,或者為命令指定完整路徑。
HOME=/tmp 0 3 * * * apache /usr/bin/php /path/to/my/script.php