这个命令是一排管道 inotify 工作人员中的一部分(你这么说吗?)等等。我认为它比要求剖析整个(非常有用!)命令来找出答案更适合每个帖子策略的一个问题使用的inotify
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}'
根据文档,语法是
xargs [options] [command [initial-arguments]]
-I Replace-str 将初始参数中出现的replace-str 替换为从标准输入读取的名称。此外,不带引号的空格不会终止输入项;相反,分隔符是换行符。意味着 -x 和 -L
为什么大括号里有勾号?
然后方括号里填满了命令的输出ps
,对吗?
--no-headers
- 非常明显-o
- 订购选项...%p
- 进程 ID (pid)%U
- 用户身份%c
- 可执行文件的简单名称
-p pidlist 按 PID 选择。这将选择进程 ID 号出现在 pidlist 中的进程。与 p 和 --pid 相同。
第二个'{}'
pid 列表有什么作用以及它有什么值?$foo
?select
在这种情况下意味着什么?
仅供参考
前面的代码是:
for foo in /proc/*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |
作者: envygeeks ,https://github.com/atom/atom/issues/2082
谢谢
答案1
-
为什么大括号里有勾号?
为了防止 shell 损坏它 - 在某些 shell 中,它可能是一个将被解释的特殊字符序列;并且您可能决定使用其他东西而不仅仅是
'{}'
. -
第二个
'{}'
pid 列表有什么作用以及它有什么值?第二个
'{}'
实际上是在 xargs 将运行的命令内部 - 这是将被读取的内容{}
替换的地方xargs
stdin
-
$foo?
不。尝试了解该命令在所有打开的文件描述符上生成的循环(循环
for
)并获取它们的完整路径(readlink
部分),其中包括所属进程的 PID。然后获取此列表,过滤掉那些引用inotify(部分)的内容并从路径( )grep
中提取PID 。cut
每一行都xargs
用作占位符的替换。 -
select 在这种情况下意味着什么?*