如何重新加载一组 systemd 服务?

如何重新加载一组 systemd 服务?

我想要重新加载(不是重新启动!)发生事件时的一组服务。

例如,如果我更新 SSL 证书,我希望重新加载所有使用它们的服务(nginxpostfix浮现在脑海中)。我也不想记住给定服务器上的哪些服务使用 SSL 证书。在配置时将它们分组应该就足够了。

另一方面,我想避免更改.service软件包提供的文件,因为这将需要在更新期间进行手动干预。

我该如何做到这一点?

有一个选项可以根据请求停止一组服务,但这会使它们在一两秒钟内无法访问,或者更糟 - 它们可能会保持不动,直到修复为止。我买不起。

答案1

/etc/systemd/system/ssl-reload.target使用以下内容创建。

[Unit]
Description=Services which need reloaded with SSL certs are updated.
PropagatesReloadTo=nginx postfix

然后创建另一个文件:/etc/systemd/system/ssl-reload.path

[Unit]
Description=Restart services which use SSL when the cert directory changes

[Path]
PathChanged=/path/to/your/ssl/certs/dir

[Install]
WantedBy=multi-user.target

然后:

systemctl enable ssl-reload.path
systemctl start ssl-reload.path

话虽如此,在更改 SSL 目录中的某些内容后,应该会自动重新加载所需的服务。

如果您不希望自动行为,则不要使用该.path文件,只需systemctl reload ssl-reload.target在更改 SSL 文件后手动发出即可。

相关内容