Назад | Перейти на главную страницу

Почему моя cronjob не работает?

У меня есть cronjob в /etc/cron.d/mycron это выглядит так:

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

В том же файле есть другие cronjobs, которые запускаются от имени пользователя root и других пользователей (которые работают), но по какой-то причине это задание работает как apache, не работает и ничего не сообщает в /var/log/messages или отправив что-нибудь в MAILTO адрес в cron-файле. Когда я su apache и запустите команду cronjob, она работает нормально, но cron она не нравится.

Для меня это давняя проблема, и на данный момент я собрал следующие возможности:

Есть идеи или опыт решения этой проблемы и какое решение?

Спасибо

Для пользователя должен быть установлен домашний каталог. Если у пользователя его нет, вы можете указать его прямо в cron.d-файле.

Вероятно, вам также потребуется указать PATH = / usr / bin / или указать полный путь для команды.

HOME=/tmp
0 3 * * *         apache    /usr/bin/php /path/to/my/script.php
  • Попробуйте использовать полный путь для php в конфигурации cron: /usr/bin/php
  • Проверьте домашний каталог apache: grep apache /etc/passwd Насколько я знаю, у пользователя всегда должен быть домашний каталог. Он может находиться не в / home.
  • Проверяйте сообщения системного журнала о событиях безопасности. Если это PAM, вы кое-что увидите
  • Попробуйте отключить SELinux

cron по умолчанию работает с очень ограниченным PATH; вам нужно указать полный путь к php двоичный?