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

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

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

Программное обеспечение находится в папках / var / www / html V2 и V3 соответственно. Поэтому я использую sed для изменения версии. а) утром смените виртуальный хост и перезапустите apache б) днем ​​вернитесь к старой версии и перезапустите 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 не перезапускается для применения изменений. Не могли бы вы помочь мне решить проблему? Спасибо

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

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

Также бывает, что crontab имеет более ограниченный ПУТЬ, чем обычная оболочка входа. Возможно, что ни systemctl ни service находятся в ПУТИ. Так что вы можете захотеть установить PATH в верхней части crontab. Например:

PATH=/usr/sbin:/sbin:/usr/bin:/bin