检查进程是否正在运行 Mac OS X 然后执行代码

检查进程是否正在运行 Mac OS X 然后执行代码

我正在创建一个清除 Google Chrome 缓存的脚本。但是,我想检查 Chrome 是否打开,如果打开,则不运行代码,但如果没有打开,则它将执行代码。我可以看到进程名称是 Google Chrome,但代码不起作用。

这就是我到目前为止所做的。我究竟做错了什么?

SERVICE='Google Chrome'

if ps ax | grep -v grep | grep $SERVICE
then
    RUNS THE CODE
else
    echo "PLEASE CLOSE GOOGLE CHROME"
fi

任何帮助,将不胜感激 :)

答案1

正如 @StéphaneChazelas 提到的,您可以使用pgrep- 从手册页:

pgrep 命令搜索正在运行的系统上的进程表,并打印与命令行上给出的条件相匹配的所有进程的进程 ID。

SERVICE='Google Chrome'

if pgrep -xq -- "${SERVICE}"; then
    echo running
else
    echo not running
fi

答案2

您需要引用“$SERVICE”:

SERVICE='Google Chrome'

if ps ax | grep -v grep | grep "${SERVICE}" &> /dev/null; then
    echo running
else
    echo not running
fi

相关内容