どのプロセスを確認するとき、私は通常次のように書き込みます。
ps aux | grep myprocess
そして時々私が得た結果
eimantas 11998 0.0 0.0 8816 740 pts/0 S+ 07:45 0:00 grep myprocess
プロセスが実行されていない場合。
ps
grepがコマンドの出力をフィルタリングする場合、プロセスリストに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