Cron Job не работает?


24

У меня есть файл crontab, который выглядит так:

* * * * * /home/abliskovs/update/update.sh

Однако, когда я проверяю системный журнал на предмет того, что задание выполнено, ничто не может указывать на то, что оно когда-либо выполнялось. Как я могу проверить, работает ли он?

crontab -l выводит следующее:

* * * * * /home/abliskovs/update/update.sh


ОК, я сделал это
Алекс Блисковский

Может быть, глупый вопрос, но это случилось со мной раньше, поэтому я все равно буду задавать. Убедитесь, что демон cron действительно запущен! : P Второе предположение - это права, убедитесь, что они выполняются пользователем, запустившим cronjob.
Маттиас Анберг

Ответы:


21

Добавьте >> / tmp / testlog.log в конец вашей записи в crontab (чтобы перенаправить вывод в файл, который вы можете исследовать или проверить, работает ли он, дополнительно 2> & 1 будет включать вывод из консоли ошибок)

пример

0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log

Также убедитесь, что:

  • Добавьте cronjobs в правильном порядке. если вы использовали crontab -e в своей учетной записи, сценарии запускаются с вашим пользователем (и, следовательно, запись в crontab имеет на одно поле меньше - пользователь, как известно, запускает его). Если вы просто скопируете приведенный выше фрагмент в /etc/cron.d, произойдет сбой, поскольку вы не указали пользователя (или, скорее, он не найдет пользователя с именем «bash»).
  • Убедитесь, что файл сценария является исполняемым, иначе он не будет его выполнять.
  • Перезагрузите работу cron, перезагрузите службу sudo или перезапустите службу cron.sudo /etc/init.d/cron restart

Как сделать файл исполняемым?

Несколько способов сделать ваш файл исполняемым

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh

3

Убедитесь, что файл сценария является исполняемым {chmod 755}, иначе он не выполнит его


2
Чтобы сделать файл исполняемым, вы также можете запуститьchmod +x filename
Стефано Палаццо

0

Сценарий оболочки, update.shвероятно, содержит ошибки, например, некоторые команды, которые не могут быть выполнены, потому что команда не может быть найдена. В этом случае может помочь добавить путь к вашей команде в переменной PATH или добавить ее непосредственно перед вашей командой. Также помогает указать адрес электронной почты MAILTO, на этот адрес отправляются сообщения электронной почты, полученные в результате выполнения Cronjobs.

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

Вы также можете проверить локальный почтовый ящик mailи файл системного журнала на /var/log/syslogналичие ошибок. Смотрите также этот связанный вопрос, почему cronjobs может не работать .


0

У меня возникла та же проблема, и причина для меня была в том, что crontab не работал, потому что у него не было на это разрешения. Я изменил файл и поместил его в /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

Дайте мне знать, если это работает для вас.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.