Ich möchte eine Gruppe von Diensten bei einem Ereignis neu laden (nicht neu starten!).
Wenn ich beispielsweise meine SSL-Zertifikate aktualisiere, möchte ich, dass jeder Dienst, der sie verwendet, neu geladen wird ( nginx
und postfix
mir in den Sinn kommt). Ich möchte mich auch nicht daran erinnern, welche Dienste auf einem bestimmten Server SSL-Zertifikate verwenden. Es sollte ausreichen, sie bei der Konfiguration zu gruppieren.
Auf der anderen Seite möchte ich vermeiden, .service
die mit den Paketen gelieferten Dateien zu ändern , da dies manuelle Eingriffe während der Aktualisierungen erfordert.
Wie schaffe ich das?
Es besteht die Möglichkeit, eine Gruppe von Diensten auf Anfrage zu stoppen. Dies würde sie jedoch für ein oder zwei Sekunden oder noch schlimmer unzugänglich machen. Sie bleiben möglicherweise bis zur Behebung inaktiv. Das kann ich mir nicht leisten.
/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 hat Postsave- und Presave-Befehle.service
Datei als Überschreibungen bearbeiten , können Sie das Aktualisierungsproblem vermeiden.sudo systemctl edit foo.service
speichert Ihre Änderungen in/etc/systemd/system/foo.service.d/override.conf
der installiertenfoo.service
Datei, anstatt sie zu ändern .Antworten:
Erstellen Sie
/etc/systemd/system/ssl-reload.target
mit den folgenden Inhalten.Dann erstellen Sie eine weitere Datei:
/etc/systemd/system/ssl-reload.path
Dann:
Nachdem dies in Ihrem SSL-Verzeichnis geändert wurde, sollten die gewünschten Dienste automatisch neu geladen werden.
Wenn Sie das automatische Verhalten nicht möchten, verwenden Sie die
.path
Datei nicht und geben Sie sie nursystemctl reload ssl-reload.target
manuell aus, nachdem Sie die SSL-Dateien geändert haben.quelle