运行 后台服务不卡顿

Running a service in the background withouth getting stuck

目前我在尝试在后台 运行 a process/script 时遇到问题[主人在小兵上启动它]

脚本是这样的:

#!/bin/bash

nohup ping 8.8.8.8 >/dev/null&

我从大师那里调用它:

Process-Name:
  service.running:
   - name: Script-Name
   - enable: True

出于某种原因,它卡在了 master 上,我已经阅读了一些关于这个问题的文章[显然之前发生过]并尝试了他们的解决方案,但显然 service state 似乎没有任何内容工作。

有没有办法解决这个问题?

简而言之,您应该先将脚本配置为系统守护程序(SysV init.d 脚本,或systemd 单元,或...取决于OS).

详情

service.running 功能需要正确配置系统服务 ~ 守护进程。

例如,在基于 RHEL 的 Linux 上,如果您在其中一个命令的输出中没有看到您的脚本名称,您应该首先将其配置为适当的服务(即 a separate topic):

# systemd
systemctl list-units | grep your_service_name

# SysV init.d
chkconfig --list     | grep your_service_name

并且因为您想在后台启动它,cmd.run 函数也不是正确的工具:

  • 它只会报告脚本启动成功,而不会等待其完成结果。
  • 它每次都会启动脚本的新实例。

但是,如果您只想 "fire and forget",请使用 cmd.run.