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
Дайте мне знать, если это работает для вас.