macos - 通过进程名称使用 Bash 检查 Mac 进程是否正在运行

标签 macos bash unix process

如何使用 Bash 脚本中的进程名称检查 Mac OS X 上的进程是否正在运行?

我正在尝试编写一个 Bash 脚本,如果它已经停止,它将重新启动一个进程,但如果它仍在运行,则什么都不做。

最佳答案

解析:

ps aux | grep -v grep | grep -c [-i] $ProcessName

...可能是您最好的选择。

ps aux 列出所有当前正在运行的进程,包括 Bash 脚本本身,它由 grep -v grep 根据 Jacob 的建议(在评论中)和 grep -c [-i] $ProcessName 返回可选的不区分大小写的整数进程数,由 Sebastian 建议返回整数。

这是一个简短的脚本,可以完成您的任务:

#!/bin/bash
PROCESS=myapp
number=$(ps aux | grep -v grep | grep -ci $PROCESS)

if [ $number -gt 0 ]
    then
        echo Running;
fi

编辑: 我最初在 grep 中包含了一个 -i 标志,以使其不区分大小写;我这样做是因为我尝试的示例程序是 python,它在 Mac OS X 上作为 Python 运行——如果您确切地知道您的应用程序的情况,-i 不是必需的。

这种方法的优势在于它可以随您扩展——在未来,如果您需要确保,比方说,您的应用程序的 5 个实例正在运行,您已经在计算了。唯一需要注意的是,如果另一个应用程序的命令行中有您的程序名称,它可能会出现——grep 的正则表达式将解决该问题,如果您很狡猾(并遇到这个问题)。

研究 ps 的 Darwin 手册页, grep , 和 wc .

关于macos - 通过进程名称使用 Bash 检查 Mac 进程是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821886/

相关文章:

c - 在子进程和父进程中,变量具有相同的地址但具有不同的值?

c++ - Clang 错误地删除死代码

java - RHEL 5 - 路径环境变量更改不生效

bash - 计算每列中非空条目的数量,例如,comm 输出

git - 如何从提交哈希中分辨出 git 分支名称?

c - 过程 : Regarding proc Executable size difference

macos - 除了 screencapture -l 之外,还有其他方法可以制作背景窗口的屏幕截图吗?

c++ - Mac 64 位系统调用

macos - 在 Mac 上获取文件的完整网络路径 - 终端

bash - Bash 脚本中的 SSH 搞乱文件读取