我想在启动时执行脚本。该脚本是递归的并调用自身。
当我为其添加 systemd 单元时,它正在执行,但由于DefaultTimeoutStartSec
.它假设我的脚本尚未开始。
以下是我创建的服务文件
[Unit]
Description = My Desc
After = network.target
[Service]
Type = forking
ExecStart = /root/my_recursive_script.sh
[Install]
WantedBy = multi-user.target
我知道我可以通过添加到无穷大来使这项服务正常工作TimeoutSec
,但这将是解决方法。当我执行我的服务时
systemctl start myservice.service
直到超时它才会离开光标。
- 让 systemd 单元与递归脚本一起工作的正确方法是什么?
- 我是否需要对脚本进行更改以使其像守护进程一样可执行?
答案1
问题是您已将服务类型设置为forking
。 Systemd 正在等待您ExecStart
分叉到后台,然后再继续。您需要将类型更改为simple
.看手册