У меня есть конкретный случай, когда тестирование новой версии программного обеспечения проводится в определенное время дня, поэтому у меня есть задание 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