Bash,显示特定文件夹中的进程

时间:2018-09-20 15:29:20

标签: linux bash ps

我需要显示在特定文件夹中运行的进程。 例如,有文件夹“ TEST ”和“ RUN ”。 3 个SQL文件是从 TEST 运行的,而 2 是从 RUN 运行的。因此,当我使用命令 ps xa 时,可以看到从 TEST RUN 一起运行的所有进程。我要查看的进程仅从 TEST 文件夹运行,因此只有 3 。有命令,解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以为此使用lsof

lsof | grep '/path/of/RUN'

如果要在同一命令中同时包含RUN和TEST

lsof | grep -E "/path/of/RUN|/path/of/TEST"

希望有帮助。

答案 1 :(得分:0)

您可以尝试fuser来查看哪些进程打开了特定文件。或者,在Linux上,检查每个候选进程的/proc/12345/cwd符号链接(将12345替换为每个进程的ID)。

fuser TEST/*.sql

for proc in /proc/[1-9]*; do
    readlink "$proc/cwd" | grep -q TEST && echo "$proc"
done

后者可能无法移植到其他U * x上,尽管有些可能提供类似的功能。