【发布时间】:2017-06-14 00:02:54
【问题描述】:
我需要有一个连续运行的 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
【问题讨论】:
标签: service cron systemd yocto