有人可以向我解释这个 xargs 命令结构吗?

有人可以向我解释这个 xargs 命令结构吗?

这个命令是一排管道 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,对吗?

  1. --no-headers- 非常明显
  2. -o- 订购选项...
  3. %p- 进程 ID (pid)
  4. %U- 用户身份
  5. %c- 可执行文件的简单名称

-p pidlist 按 PID 选择。这将选择进程 ID 号出现在 pidlist 中的进程。与 p 和 --pid 相同。

第二个'{}'pid 列表有什么作用以及它有什么值?$fooselect在这种情况下意味着什么?

仅供参考

前面的代码是:

for foo in /proc/*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |

作者: envygeeks ,https://github.com/atom/atom/issues/2082

谢谢

答案1

  1. 为什么大括号里有勾号?

    为了防止 shell 损坏它 - 在某些 shell 中,它可能是一个将被解释的特殊字符序列;并且您可能决定使用其他东西而不仅仅是'{}'.

  2. 第二个'{}'pid 列表有什么作用以及它有什么值?

    第二个'{}'实际上是在 xargs 将运行的命令内部 - 这是将被读取的内容{}替换的地方xargsstdin

  3. $foo?

    不。尝试了解该命令在所有打开的文件描述符上生成的循环(循环for)并获取它们的完整路径(readlink部分),其中包括所属进程的 PID。然后获取此列表,过滤掉那些引用inotify(部分)的内容并从路径( )grep中提取PID 。cut每一行都xargs用作占位符的替换。

  4. select 在这种情况下意味着什么?*

    https://en.wiktionary.org/wiki/select#Verb

相关内容