grepは私のpsに侵入しています。

grepは私のpsに侵入しています。

どのプロセスを確認するとき、私は通常次のように書き込みます。

ps aux | grep myprocess

そして時々私が得た結果

eimantas 11998  0.0  0.0   8816   740 pts/0    S+   07:45   0:00 grep myprocess

プロセスが実行されていない場合。

psgrepがコマンドの出力をフィルタリングする場合、プロセスリストにgrepが表示される理由を知りたいです。後ろに psもう逃げましたか?

ベストアンサー1

この動作は完全に正常であり、bashがパイプの使用を管理する方法によって発生します。

パイプは bash を使用して実装されます。pipeシステムコール。その呼び出し後、bashは標準入力(ファイル記述子0)正しいプロセス()の入力を使用してくださいgrep。基本的なbashプロセスは別のフォークを生成し、標準入力の代わりにfifoの出力記述子を渡します(ファイル説明1)左側のコマンドを実行します。

ユーティリティはpsコマンドの後に始まるので、grep出力で確認できます。

信頼できない場合は、set -xアクティベーションコマンドトレースを使用できます。たとえば、

+ ps aux
+ grep --color=auto grep
+ grep --color=auto systemd
alexises  1094  0.0  0.8   6212  2196 pts/0    S+   09:30   0:00 grep --color=auto systemd

詳細な手順については、基本Cシェルの次のセクションを参照してください。http://www.cs.loyola.edu/~jglenn/702/S2005/Examples/dup2.html

おすすめ記事