我的系统上运行着两个 python 程序,假设它们分别叫做 programx
和 program y
。
我想获取程序的 pid y
,但不x
获取我的 bash 脚本的 pid。使用 时pgrep python
,我获取了它们两个的 pid,但不知道哪个是哪个。
有什么想法我可以如何在 Bash 脚本中区分两者吗?
答案1
-f
您可以使用开关来匹配参数列表pgrep
(尝试man pgrep
阅读更多)。
pgrep -f x
应该只产生程序x
和
pgrep -f y
分别仅程序y
。
另外,如果x
和y
不够独特并且结尾行数太多,则可以使用ps
和grep
以获得更多选项
ps ax | grep 'python x' | grep -v grep | awk '{print $1}'
这会
- 列出所有相关流程
- 查找其中的 grep
python x
。在这里你可能需要添加一个路径说明符,例如python ./path/to/x
- 从匹配的进程列表中删除 grep 命令本身
- 仅打印第一列,即 pid。