Я использую Crontab на своем пользователе для выполнения большого количества вихревых скриптов, они хорошо работают, 40 из них работы.
Но сценарии, которые я имею в корневом' Crontab, с помощью коммандос 'sudo crontab-e', не работают, они прекратили работать приблизительно 1 месяц назад и хорошо работали больше 2 лет.
Попытались говорить с людьми сервера, и ни один из них не имеет идеи, что могло быть неправильным. BTW я не эксперт по серверу, я могу следовать руководству, но вот именно :)
Я попробовал: перезапуск сервиса крона, "устанавливая новый crontab", запуская скрипты в нормальном crontab использование пользователя root, перезапуская сервер, удаляя все в файле, удаляя MAILTO.
Все сценарии работают, просто выполнив их вручную.
это - штраф, который не работает:
MAILTO = ""
2 3 * * * "/usr/local/scripts/backup-mysql.sh"
25 3 * * * "/usr/local/scripts/backup-prestashop.sh"
Самое полезное должно быть должно получить ошибочные сообщения.
2 3 * * * { date; bash -v "/usr/local/scripts/backup-mysql.sh"; date; } &>/tmp/cron-backup-mysql.log
25 3 * * * { date; bash -v "/usr/local/scripts/backup-prestashop.sh"; date; } &>/tmp/cron-backup-prestashop.log
Вывод зарегистрирован в /tmp/cron-backup-mysql.log
и /tmp/cron-backup-prestashop.log
. bash -v
выходные строки сценария, поскольку они читаются.
Можно проверить владельца файла, чтобы быть уверенными, что он работает как корень. Затем считайте файл, у Вас есть запуск и время окончания, чтобы проверить, закончено ли выполнение и если продолжительность - то, что Вы ожидаете.
Если сценарий теперь работает правильно, проблемой была, вероятно, оболочка, вызванная неявно (удалить bash -v
от crontab и добавляют echo SHELL = $SHELL
к сценарию) или разрешение выполнения, отсутствующее на сценарии (chmod +x
).
Если катастрофический отказ сценария, bash -v
поможет Вам найти ошибку. Можно показать больше деталей путем замены -v
-x
, но это лавинно разошлет вывод с каждым выражением, поскольку они оценены.