我想要重新加载(不是重新启动!)发生事件时的一组服务。
例如,如果我更新 SSL 证书,我希望重新加载所有使用它们的服务(nginx
并postfix
浮现在脑海中)。我也不想记住给定服务器上的哪些服务使用 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 文件后手动发出即可。