如何使用 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
的正则表达式将解决该问题,如果您很狡猾(并遇到这个问题)。
关于macos - 通过进程名称使用 Bash 检查 Mac 进程是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821886/