У меня есть 3 cronjob записи (crontab -l
) первая запись является сценарием Perl, что создает резервное копирование LVM виртуальной машины, и другие два являются просто sh выполнением файлов mysqldump
.
Хорошо однако я отредактировал crontab -e
как корень (sudo su
сначала), и это - мой первый ввод заданий
# Run daily backup of my job at 3:15 [relation ä11]
15 3 * * * perl /opt/AUTO_BACKUP/virt-backup.pl --action=dump --date --vm=SERVER2
Хорошо, но это ни создает вывода в резервном каталоге, ни любых записей в журналах крона. В файлах журнала крона я нашел только записи других sh заданий.
Но когда я копирую команду perl /opt/AUTO_BACKUP/virt-backup.pl --action=dump --date --vm=SERVER2
прямо в корневой терминал это работает как очарование. Таким образом, так как я редактирую crontab
как корень только правильный пользователь должен выполнить задание. И также никакие ошибки в журнале.
Изменитесь perl
запись в path/to/perl
. Часто времена, команды такой как perl
и python
являются на самом деле основанными на среде вещами и найдены в Вашем ПУТИ. Поскольку крон испытывает недостаток в том ПУТИ, лучше использовать полные пути в crontab.
Причина выполнения сценария, будучи выполняемым от оболочки, но не как cronjob обычно являются другим ENV, который это находит там.
Так изменяют Ваш cronjob для сохранения ENV в, например,/tmp/env при помощи
env | sort> /tmp/env
и когда/tmp/env прибывает разность он с текущим ENV
env | sort | diff - /tmp/env
HTH