小编Igo*_*gor的帖子

Systemd - 如果服务停止超过 X 次,则始终运行服务并重新启动

我需要一个连续运行的 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)

cron service systemd yocto

5
推荐指数
1
解决办法
2755
查看次数

在Yocto构建的linux上安装后脚本

我需要在Yocto构建的目标操作系统上运行脚本.

此脚本需要作为安装的一部分运行,因此必须只运行一次(在整个OS安装之后或首次启动时).它不能在主机系统上运行,因为它取决于仅存在于目标上的硬件IO.

另一个小的约束是rootfs是以只读方式挂载的,但我想这可以通过将脚本重新挂载为rw并在执行后再次重新安装为r或沿着这些行的某些内容来避免.

任何帮助表示赞赏.

openembedded angstrom-linux yocto imx6

3
推荐指数
1
解决办法
5450
查看次数

标签 统计

yocto ×2

angstrom-linux ×1

cron ×1

imx6 ×1

openembedded ×1

service ×1

systemd ×1