我们为 systemd 编写了一个服务脚本,用于在系统启动时启动可执行文件。服务脚本每隔 90 秒重新启动一次,保持一致。如果我们禁用该服务并运行可执行文件,它将按预期运行。我们在 Intel Edison 上使用 Yocto Linux。
这是我们的启动脚本:
[Unit]
Description=patsuit
After=network-online.target
Wants=network-online.target
[Service]
WorkingDirectory=/home/root
Type=forking
ExecStart=/bin/PatDownSuitFirmware/PatDown_V3
User=root
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
答案1
您的准备协议不匹配。您已经告诉 systemd 您的程序分叉了一个子进程,然后退出父进程以表明它已准备好。但事实上你的程序并没有这样做。由于它没有声明在 90 秒(默认启动超时)内准备就绪,因此 systemd 判定您的服务已失败。失败的服务会让一切都消失。由于on-failure
,您失败的服务将重新启动,并重复该循环。
使用正确描述程序实际功能的准备协议。那,你还没有告诉我们。