У меня есть список заданий крона.
00 21 * * * sh ~/db_backup.sh
20 21 * * * sh ~/update.sh
* 5 1 * * sh ~/db_vacuum.sh
Первое задание делает резервное копирование базы данных, у меня есть работа сервера Ubuntu, это работает, поскольку я проверяю дату, которую файл резервной копии был в последний раз изменен с помощью:
date -r db.sql
Мое третье задание крона просто пылесосит мой дб в начале каждого месяца. Моя проблема находится в моей второй работе. Это задание выполняет несколько обратных вызовов URL на приложении DJango, которое я запускаю:
sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command1"
sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command2"
sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command3"
sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command4"
Я проверяю ожидаемые выводы, и кажется, что файл не выполнялся вообще, странная вещь состоит в том, если я выполняю его вручную с командой:
sh ~/update.sh
Это работает безупречно, есть ли некоторая выгода с wgets, который я пропускаю? В случае, если это не очевидно, команды wget указывают к контейнеру докера на выполнение сервера.
ОБНОВЛЕНИЕ:
Я пытался присоединить файлы журнала как выходные файлы к командам wget в моем .sh файле. После поиска среди старых изданий после установленного времени выполнения задания крона в каталоге не было никаких файлов журнала.
Я затем проверил на самом деле системные журналы, и я заметил, что это сообщение появилось в журнале второе после того, как мой .sh файл выполнялся.
(CRON) info (No MTA installed, discarding output)
Это могло быть связано так или иначе?
Ваша проблема использует sudo
в Вашем сценарии. Крон может никогда , вводят Ваш sudo пароль.
Я замечаю, что Вы используете sh для вызова cronjob однако sh, подмножество удара и не могло бы быть в состоянии выполнить cronjob. Также выполнение задачи вручную является не обязательно тем же как выполнением его кроном. Измените sh, чтобы избить cronjob и видеть то, что происходит.
errormessage о MTA, который Вы видите в файле журнала, означает, что у Вас нет установленного Агента Передачи почты, подразумевая, что Вам не установили программное обеспечение для отправки сообщений электронной почты. Крон пытается отправить сообщения электронной почты для информирования Вас о чем-то. Это мог бы быть errormessage о сбое cronjob.