Shell脚本:如何获取正在使用文件系统/目录的所有进程ID

时间:2018-12-14 09:41:15

标签: bash shell

我正在检查正在使用文件系统的进程。现在,当我进行热熔器时,将会有数百个过程。

fuser -cu /xyz

输出被截断:

393ce(xyz)  1044c(root)  1068cm(oracle)  2065ce(xyz)  3729ce(xyz)

我只想用换行符分隔文件中的进程ID,以便可以运行循环来检查进程。

1 个答案:

答案 0 :(得分:2)

如果您只想使用id而不是id(user),请不要使用-u选项。 fuser -u的文档:

  

-u,--user
   将进程所有者的用户名附加到每个PID。

对我来说,fuser -c /的格式与您的示例不同。每个ID后面都有表示访问类型的字母。这些字母被打印到stderr上,因此我将使用2>&-来隐藏它们。

$ fuser -c /
/:                    1717rce  1754rce  1765rce  1785rce  ...
$ fuser -c / 2>&-
  1717  1754  1765  1785  ...

您可以使用grep每行打印一个ID:

$ fuser -c / 2>&- | grep -o '[0-9]*'
1717
1754
1765
1785
...

但是,要运行循环,您不需要每行一个ID。用空格分隔的ID也可以正常工作:

for id in $(fuser -c / 2>&-); do
    echo "id = $id"
done