基本上,我只想实现与 init.d 的 monitor 使用 systemd 相同的功能
我有一个作为守护进程运行的服务。如果该服务由于某种原因崩溃,我想使用 systemd 重新启动它。
我在翻其他与此相关的问答时,发现我们可以在该服务的单元中添加以下内容。
Restart=always
RestartSec=0
但是只有当我们发生崩溃时才会重启吗?或者即使它被杀死了?
是否有根据某些信号(如 SIGTERM、SIGINT 或 SIGHUP)重新启动它的方法?
最佳答案
根据标准文档,服务重启的条件发生在退出、终止和超时时。所以,你的问题得到了回答。当它崩溃时,它退出,当它被杀死时,是的,它被重新启动。
Restart= Configures whether the service shall be restarted when the service process exits, is killed, or a timeout is reached....
查看此处了解更多信息和详细信息 ( https://www.freedesktop.org/software/systemd/man/systemd.service.html )
关于发送信号,该过程遵循其设计要遵循的信号处理程序。
这与 systemd Controller 和效果无关。只要考虑一下,当您发送信号时,实际上是将其发送给进程本身。它根本不会到达 systemd 进程。
关于linux - 仅根据某些信号崩溃时如何使用 systemd 重启服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732150/