Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Shell脚本:如何获取使用文件系统/目录的所有进程Id_Bash_Shell - Fatal编程技术网

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

Bash Shell脚本:如何获取使用文件系统/目录的所有进程Id,bash,shell,Bash,Shell,我正在检查使用文件系统的进程。现在,当我做fuser时,有数百个进程即将到来 fuser -cu /xyz 输出被截断: 393ce(xyz) 1044c(root) 1068cm(oracle) 2065ce(xyz) 3729ce(xyz) 我只需要文件中用换行符分隔的进程id,这样我就可以运行循环来检查进程。如果您只需要id而不是id(用户),那么不要使用-u选项。定影器-u的文档记录: -u、 --用户 将进程所有者的用户名附加到每个PID 对我来说,fuser-c/的格式与

我正在检查使用文件系统的进程。现在,当我做fuser时,有数百个进程即将到来

fuser -cu /xyz
输出被截断:

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

我只需要文件中用换行符分隔的进程id,这样我就可以运行循环来检查进程。

如果您只需要
id
而不是
id(用户)
,那么不要使用
-u
选项。
定影器-u的文档记录:

-u、 --用户
将进程所有者的用户名附加到每个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

如果您只想要
id
而不想要
id(user)
,则不要使用
-u
选项。
定影器-u的文档记录:

-u、 --用户
将进程所有者的用户名附加到每个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

当然,在最后一种情况下也不需要循环
printf'id=%s\n'$(fuser-c/2>&-
@tripleee我知道。循环只是为了证明
for
循环是通过分词而不是通过读行来工作的。OP说»这样我就可以运行一个循环«<代码>回音
只是一个占位符。我认为OP会做一些不同于在循环内打印的事情。@Socowi很好当然,在最后一种情况下,你也不需要循环
printf'id=%s\n'$(fuser-c/2>&-
@tripleee我知道。循环只是为了证明
for
循环是通过分词而不是通过读行来工作的。OP说»这样我就可以运行一个循环«<代码>回音
只是一个占位符。我认为OP会做一些不同的事情,而不仅仅是在循环内部打印。@Socowi很好的一个