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

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

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

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

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

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

4 ответа

Решение

Добавьте >>/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

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

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

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

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

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

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

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

Другие вопросы по тегам