作为标题,我想找到在特定工作目录中运行的所有进程。
首先,我认为我可以使用这种方法:
使用ps
列出所有进程
在上面的pid列表中使用pwdx
获取工作目录列表
检查工作目录列表的结果,然后与特定工作目录进行比较。
但是我认为这很笨拙,有没有更好的解决方案?
最佳答案
在Python中实现从Shell函数调用的核心逻辑(因此只需要一个进程,而不是使用一堆单独的工具):
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