Bob*_*ver 7 systemd timeout output
当在预定义的时间内没有生成输出时,是否可以重新启动 systemd 服务?
我有一个显然可以挂起的脚本,但 systemd(或 Python 在这种情况下)没有检测到它,因此它不会进入失败状态。
但是,它确实会停止记录输出,因此我应该能够在一分钟内没有输出后重新启动服务。这可以用 systemd 实现吗?
我当前的系统文件:
[Unit]
Description=SOmething
After=network.target
[Service]
WorkingDirectory=/home/user/system/something
User=nobody
ExecStart=/usr/bin/python2 something.py
Restart=on-watchdog
RestartSec=10s
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我不认为 systemd 允许你这样做,至少systemd.service(5)手册页似乎没有提到类似的事情。
但是,您可以做的是使用 systemd 的内置看门狗。
您可以通过设置WatchdogSec=并定期发送您的服务来做到WATCHDOG=1这一点sd_notify。如果您进行了设置,WatchdogSec=30那么您的服务必须至少每 30 秒通知 systemd。
当你的服务挂起时,它不会再通知 systemd,systemd 将因此终止你的服务。
使用restart=on-watchdog(您已经拥有,但没有它不会执行任何操作WatchdogSec=),那么 systemd 将在您的服务被看门狗杀死后重新启动您的服务。