Linux

為什麼我的 cronjob 沒有執行?

  • August 26, 2015

我有一個 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

引用自:https://serverfault.com/questions/417850