У меня есть особый случай, когда тестирование новой версии программного обеспечения проводится в определенное время дня, поэтому у меня есть 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 не перезапускается для применения изменения. Не могли бы вы помочь мне решить проблему? Спасибо
Старая команда service
устарела и будет удалена в будущем выпуске Ubuntu. Это больше не предпочтительный способ управления услугами. Теперь это systemctl
.
Вместо этого вы должны написать systemctl перезапустить apache2
. Конечно, сервер не нужно перезапускать для простого изменения конфигурации; перезагрузка также подойдет и не вызовет ненужного прерывания службы. Итак, systemctl перезагрузите apache2
.
Кроме того, crontabs имеют более ограниченный PATH, чем ваша обычная оболочка входа в систему. Возможно, что ни systemctl
, ни service
не указаны в PATH. Поэтому вы можете установить PATH в верхней части crontab. Например:
PATH=/usr/sbin:/sbin:/usr/bin:/bin