将递归脚本作为 systemd 单元启动

将递归脚本作为 systemd 单元启动

我想在启动时执行脚本。该脚本是递归的并调用自身。
当我为其添加 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 

直到超时它才会离开光标。

  1. 让 systemd 单元与递归脚本一起工作的正确方法是什么?
  2. 我是否需要对脚本进行更改以使其像守护进程一样可执行?

答案1

问题是您已将服务类型设置为forking。 Systemd 正在等待您ExecStart分叉到后台,然后再继续。您需要将类型更改为simple.看手册

相关内容