Igo*_*gor 5 cron service systemd yocto
我需要一个连续运行的 systemd 服务。有问题的系统是由 Yocto 构建的嵌入式 linux。如果服务因任何原因停止(失败或刚刚完成),它应该自动重新启动 如果重新启动超过 X 次,系统应该重新启动。
有什么选择?我可以想到以下两个,但两者似乎都不理想 1) 有一个 cron 工作,它实际上会执行上面的检查,并将重试次数保持在 /tmp 或其他 tmpfs 中的某处 2) 让服务本身跟踪它的次数已启动(再次在某些 tmpfs 位置)并在必要时重新启动。如果服务没有运行,Systemd 只需要不断尝试启动它
编辑:根据答案的建议,我修改了服务以使用StartLimitAction下面给出的。它会导致设备正确重新启动,但它绝不会重新启动系统,即使我不断终止脚本:
[Unit]
Description=myservice system
[Service]
Type=simple
WorkingDirectory=/home/root
ExecStart=/home/root/start_script.sh
Restart=always
StartLimitAction=reboot
StartLimitIntervalSec=600
StartLimitBurst=5
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
您的服务文件中的内容应该非常接近您的要求:
[Service]
Restart=always
[Unit]
StartLimitAction=reboot
StartLimitIntervalSec=60
StartLimitBurst=5
Run Code Online (Sandbox Code Playgroud)
如果服务停止,它将重新启动服务,除非 60 秒内重新启动超过 5 次:在这种情况下,它将重新启动。
您可能还想查看WatchdogSec价值,但此软件看门狗功能需要服务本身的支持(不过添加起来很容易,请参阅 WatchDogSec 的文档)。