У меня есть файл crontab, который выглядит следующим образом:
* * * * * /home/abliskovs/update/update.sh
Однако, когда я проверяю системный журнал на наличие доказательств того, что задание выполнено, нет ничего, что могло бы указывать на то, что оно когда-либо бежал. Как я могу проверить, работает ли он?
crontab -l
выдает следующее:
* * * * * /home/abliskovs/update/update.sh
Добавьте >> / tmp / testlog.log в конец вашей записи в crontab (чтобы перенаправить вывод в файл, который вы можете исследовать, или проверить, работает ли он, дополнительно 2> & 1 будет включать вывод из консоль ошибок)
blockquote>Пример
0 * * * * /home/abliskovs/update/update.sh 2> & amp; 1 /tmp/testlog.log
blockquote>Также удостоверьтесь в следующем:
- Добавьте правильную работу 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
Сообщите мне, работает ли это на Вас.