You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中判断Daemon(守护进程)是否已运行?

守护进程启动判断脚本修改方案

核心思路

利用/etc/init.d/myDaemon status命令的退出状态码做判断:

  • 守护进程运行时,该命令返回退出码0
  • 进程未运行时,返回非0的退出码

修改后的完整脚本

case "$1" in
     start)
        if sudo /etc/init.d/myDaemon status > /dev/null 2>&1
        then
            echo "Service already running"
        else
            # 此处添加启动守护进程的实际命令,例如:
            # sudo /etc/init.d/myDaemon start
            echo "Daemon has been started"
        fi
        ;;
esac

代码说明

  • > /dev/null 2>&1:把status命令的标准输出和错误输出全部丢弃,避免干扰自定义提示信息
  • if 命令:Shell中直接在if后执行命令,会根据命令的退出码判断真假——退出码为0则判定为真,非0则为假

备选方案(基于PID文件)

如果你的守护进程会生成PID文件(通常位于/var/run/myDaemon.pid),也可以用这种方式判断:

case "$1" in
     start)
        PID_FILE="/var/run/myDaemon.pid"
        if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") > /dev/null 2>&1
        then
            echo "Service already running"
        else
            # 启动命令
            echo "Daemon has been started"
        fi
        ;;
esac
  • [ -f "$PID_FILE" ]:检查PID文件是否存在
  • kill -0 PID:不发送任何信号,仅校验PID对应的进程是否存活,存活则返回0

内容的提问来源于stack exchange,提问作者MOR_SNOW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:55:56