Я хочу перезагрузить (а не перезапустить!) Группу сервисов после события.
Например, если я обновлю свои SSL-сертификаты, я хочу, чтобы все службы, которые их используют, были перезагружены ( nginx
и postfix
приходят на ум). Также я не хочу помнить, какие службы на данном сервере используют SSL-сертификаты. Этого должно быть достаточно, чтобы они были сгруппированы, когда они были настроены.
С другой стороны, я бы хотел избежать изменения .service
файлов, поставляемых с пакетами, потому что это потребует ручного вмешательства во время обновлений.
Как мне это сделать?
Существует возможность остановить группу служб по запросу , но это сделает их недоступными на секунду или две, или еще хуже - они могут оставаться недоступными до тех пор, пока не будут исправлены. Я не могу себе этого позволить.
/opt/letsencrypt/letsencrypt-auto renew --pre-hook "service nginx stop; service postfix stop; service squid stop" --post-hook "service nginx start; service postfix start; service squid start"
также есть предварительная и дополнительная ловушка: у certmonger есть команды postave и presave.service
файл как переопределение, вы можете избежать проблемы обновления.sudo systemctl edit foo.service
будет хранить ваши изменения,/etc/systemd/system/foo.service.d/override.conf
а не изменять установленныйfoo.service
файл.Ответы:
Создайте
/etc/systemd/system/ssl-reload.target
со следующим содержанием.Затем создайте другой файл:
/etc/systemd/system/ssl-reload.path
Затем:
С учетом вышесказанного, после изменения чего-либо в вашем каталоге SSL, нужные сервисы должны быть автоматически перезагружены.
если вам не нужно автоматическое поведение, то не используйте
.path
файл, а просто введитеsystemctl reload ssl-reload.target
вручную после изменения файлов SSL.источник