查找在特定工作目录中运行的所有进程

时间:2019-01-09 02:49:35

标签: linux bash shell

作为标题,我想找到在特定工作目录中运行的所有进程。 首先,我认为我可以使用这种方法:

  1. 使用ps列出所有进程
  2. pwdx用于上面的pid列表以获取工作目录列表
  3. 检查工作目录列表的结果,然后与特定的工作目录进行比较。

但是我认为这很笨拙,有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

实现从Shell函数调用的Python的核心逻辑(因此只需要一个进程,而不是分解一堆单独的工具):

pids_for_dir() {
  python - "$@" <<'EOF'
import sys, os.path, glob
target = os.path.abspath(sys.argv[1])
for name in glob.glob("/proc/*/cwd"):
  if os.path.abspath(name) == target:
    print(name.split('/')[-2])
EOF
}

...从您的外壳调用为:

pids_for_dir /tmp