このコマンドは、inotifyワーカー(そう言いましたか?)などのパイプラインの一部です。私は、inotifyの使用に対する答えを見つけるために(非常に便利な!)コマンド全体を分析するように要求するよりも、投稿ごとに1つの質問戦略に適していると思います。
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}'
文書によると、構文は次のとおりです。
xargs [options] [command [initial-arguments]]
-I置換-str初期引数の置換-strエントリを標準入力から読み取った名前に置き換えます。また、引用符のないスペースは項目を終了せず、代わりに区切り文字は改行文字です。 -x と -L を意味します。
矯正器にダニがあるのはなぜですか?
そして角括弧はコマンドの出力で埋められますかps
?
--no-headers
- 非常に明白です-o
- 注文オプション...%p
- プロセスID(pid)%U
- ユーザーID%c
- 実行可能ファイルの簡単な名前
-p pidlist PIDで選択します。これにより、プロセスID番号がpidlistに表示されるプロセスが選択されます。 p と --pid と同じです。
2番目のpidリストは'{}'
何をしており、どのような値がありますか?$foo
?select
この場合、どういう意味ですか?
参考としてのみ
前のコードは次のとおりです。
for foo in /proc/*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |
寄稿者: envygeekshttps://github.com/atom/atom/issues/2082
ありがとう
答え1
-
矯正器にダニがあるのはなぜですか?
シェルが破損するのを防ぐために、一部のシェルでは特殊な文字順に解釈することができ、代わりに他のものを使用することを決定することもできます
'{}'
。 -
2番目のpidリストは
'{}'
何をしており、どのような値がありますか?2番目は
'{}'
実際にxargsが実行するコマンドの内側にあります。ここで読んだ内容に{}
置き換えられます。xargs
stdin
-
$foo?
いいえ。開いているすべてのファイル記述子で、コマンドによって生成されたループ(ループ)を理解し、所属プロセスのPIDを含むフルパス
for
(部分)を取得します。readlink
次に、このリストを取得し、inotify(部分)を参照する項目をフィルタリングし、パスgrep
()からPIDを抽出します。cut
各行はプレースホルダxargs
に置き換えられます。 -
この文脈での選択とはどういう意味ですか? *