linux - 仅根据某些信号崩溃时如何使用 systemd 重启服务

标签 linux service monitor systemd

基本上,我只想实现与 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/

相关文章:

c - 在 NTFS 上读取文件时如何清除 C 中的驱动器缓存

linux - 如何从字符串中将数字读入变量

php - Doctrine - 生产服务器上的警告消息

c++ - 如何从服务获取用户帐户的 Windows 特殊路径

winapi - 尝试配置Windows服务的失败操作失败并显示访问被拒绝错误

windows - 使用 Windows Powershell 从实时(更新)日志文件中过滤字符串

python - 有人有 Linux 上 fd_set 的 gdb pretty-print 代码吗?

android - HTC one - 应用程序每次都被杀死

c# - 你如何找到锁的所有者(Monitor)?

Java JFrame 在附加屏幕上最小化