Назад | Перейти на главную страницу

Задача Cron не запускается

У меня есть эта задача crontab:

$ sudo crontab -l  -u root
0 22 * * * certbot renew --cert-name app.my_website123.net --pre-hook "systemctl nginx stop" --post-hook "systemctl nginx start" >> /home/my_user/cron_log1.log 2>&1

certbot обновить требуется рут.

Через несколько дней файл журнала все еще не существует, что означает, что задача не выполняется. Это почему?

Ваш crontab запись выглядит нормально, за одним возможным исключением: certbot вероятно, должен иметь полную спецификацию пути. Например:

0 22 * * * /path/to/certbot .....

Если это не решит проблему, нам потребуется дополнительная информация. Я подозреваю, что проблема в окружающей среде, но нам нужно спросить cron какая среда создана для root пользователь. Мы можем сформулировать наш вопрос следующим образом:

  • Создайте сценарий оболочки в своем домашнем каталоге (~/) следующим образом (или с помощью редактора по вашему выбору):
$ nano ~/envtst.sh
  • После настройки для вашей системы / пользователя введите в редакторе следующее:
#!/bin/sh 
/bin/echo "env report follows for user "$USER >> /home/you/envtst.sh.out 
/usr/bin/env >> /home/you/envtst.sh.out 
/bin/echo "env report for user "$USER" concluded" >> /home/you/envtst.sh.out
/bin/echo " " >> /home/you/envtst.sh.out
  • Сохраните файл, выйдите из редактора и установите права доступа к файлу как исполняемый.
$ chmod a+rx ~/envtst.sh
  • Запустите только что созданный сценарий и просмотрите вывод в /home/you/envtst.sh.out. Этот вывод покажет вашу текущую среду как $USER вы вошли как:
$ ./envtst.sh $$ cat /home/you/envtst.sh.out
  • Открыть свой crontab для редактирования:
$ crontab -e -u root
  • Введите следующую строку внизу вашего crontab:
* * * * *  /home/you/envtst.sh >> /home/you/envtst.sh.err 2>&1

Выходной файл /home/you/envtst.sh.out будет содержать список environment для "пользователя root cron". Как только вы это узнаете, настройте crontab запись для certbot соответственно. Опубликуйте результат здесь, если остались вопросы.