我有一个简单的 systemd 服务,需要定期重新启动以防止其进程出错。 systemd 服务是否有配置选项来定期重新启动它们?所有 Restart*
选项 似乎都与退出时重新启动服务有关。
原文由 wes 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个简单的 systemd 服务,需要定期重新启动以防止其进程出错。 systemd 服务是否有配置选项来定期重新启动它们?所有 Restart*
选项 似乎都与退出时重新启动服务有关。
原文由 wes 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于 systemd 版本 >= 229,有一个名为 RuntimeMaxSec
的选项,它会在服务运行一段时间后终止服务。
例如,每 7 天重新启动一次:
[Service]
Restart=always
RuntimeMaxSec=7d
对我来说,这似乎比滥用 Type=notify
和 WatchdogSec
更优雅。
systemd 提供了一种干净的方式来添加和覆盖供应商提供的 systemd 单元文件中的指令。插入单元在 man systemd.unit 中描述。例如,如果您想定期重新启动包提供的 foo 服务,您将创建一个名为 /etc/systemd/system/foo.service.d/periodic-restart.conf
的文件。内容如上图所示。然后:
systemctl daemon-reload
systemctl restart foo
您可以确认已加载 Drop-In 单元,因为它将在状态输出中报告:
systemctl status
最后,您可以通过搜索 systemctl show
输出来确认已包含该指令:
systemctl show foo.service | grep RuntimeMax
systemctl show
报告的指令将是“RuntimeMaxUSec`
原文由 Alex Forbes 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
2 回答3.2k 阅读
是的,您可以通过使您的服务
Type=notify
来使您的服务定期重新启动。在服务文件的 [Service] 部分中添加此选项以及Restart=always
并给出WatchdogSec=xx
,其中 xx 是您要重新启动服务的时间段(以秒为单位)。在这里,您的进程将在 xx 时间段后被 systemd 杀死,并将再次被 systemd 重新启动。例如。