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

Shell脚本检测应用运行状态的实现方案咨询

检测Dialog应用运行状态的最优Shell实现

核心思路

Shell中命令/函数的执行结果通过返回码传递:返回0代表成功,非0代表失败。pgrep工具本身就会在找到进程时返回0,未找到时返回1,完全契合你的需求,无需额外冗余逻辑。

最优代码实现

简化检测函数

# 检测Dialog进程是否运行,返回0表示运行,1表示未运行
appRunning() {
    # -x 确保精确匹配进程名,避免误匹配含Dialog的其他进程
    # >/dev/null 屏蔽pgrep的进程ID输出,只保留返回码
    pgrep -x Dialog > /dev/null
}

正确的分支判断

直接用if调用函数,利用其返回码走对应分支:

if appRunning; then
    echo "应用正在运行"
else
    echo "应用未运行,请重新检查"
fi

exit 0

原代码的问题解析

  1. 判断逻辑错误:你用x$(appRunning) = '0'是在比较函数的标准输出,但你的函数没有任何输出,实际是在比较x和0,永远不成立
  2. 冗余的return语句:pgrep的返回码会自动成为函数的返回值,不需要额外写&& return 0 || return

可选扩展

  • 若需忽略进程名大小写,可修改为pgrep -xi Dialog > /dev/null
  • 若需获取进程ID,去掉>/dev/null即可,判断分支逻辑保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:02:21