Проблема с перезапуском apache с помощью cron / crontab (Ubuntu 18.04)

У меня есть особый случай, когда тестирование новой версии программного обеспечения проводится в определенное время дня, поэтому у меня есть cronjob, который должен:

Программное обеспечение находится в папках / var / www / html V2 и V3 соответственно. Поэтому я использую sed для изменения версии. a) утром смените виртуальный хост и перезапустите apache b) днем ​​вернитесь к старой версии и перезапустите apache

Crontab настроен следующим образом:

0 9 * * *  sed -i 's/V2/V3/g'  /etc/apache2/sites-available/software.conf && service apache2 restart
0 14 * * *  sed -i 's/V3/V2/g'  /etc/apache2/sites-available/software.conf && service apache2 restart 

Sed изменяет версию, но apache не перезапускается для применения изменения. Не могли бы вы помочь мне решить проблему? Спасибо

0
задан 10 July 2020 в 11:43
1 ответ

Старая команда service устарела и будет удалена в будущем выпуске Ubuntu. Это больше не предпочтительный способ управления услугами. Теперь это systemctl.

Вместо этого вы должны написать systemctl перезапустить apache2. Конечно, сервер не нужно перезапускать для простого изменения конфигурации; перезагрузка также подойдет и не вызовет ненужного прерывания службы. Итак, systemctl перезагрузите apache2.

Кроме того, crontabs имеют более ограниченный PATH, чем ваша обычная оболочка входа в систему. Возможно, что ни systemctl, ни service не указаны в PATH. Поэтому вы можете установить PATH в верхней части crontab. Например:

PATH=/usr/sbin:/sbin:/usr/bin:/bin
0
ответ дан 10 July 2020 в 10:28

Теги

Похожие вопросы