• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIXの「grep」コマンドについて質問です。)

UNIXの「grep」コマンドについての質問

このQ&Aのポイント
  • UNIXの「grep」コマンドについて質問です。実行中の特定プロセスを調査する際に使用する「ps -ef | grep XXX」について、パイプして「| grep -v grep」を付けると自分自身のプロセスを排除できますが、付けない場合は自分自身のプロセスが出力されることがあります。この場合、何が決め手になっているのでしょうか。
  • 質問:UNIXの「grep」コマンドについての調査 質問内容:実行中の特定プロセスを調査する際によく使用する「ps -ef | grep XXX」についてです。このコマンドを実行する際、「| grep -v grep」というパイプを使えば自分自身のプロセスを排除できますが、それを付けない場合は自分自身のプロセスが出力されることがあります。この場合、何が決め手になっているのでしょうか。
  • UNIXの「grep」コマンドについての質問 質問内容:UNIXの「grep」コマンドについて質問です。特定のプロセスを調査する際に使用する「ps -ef | grep XXX」について、パイプして「| grep -v grep」とすると自分自身のプロセスを排除できますが、それを付けない場合は自分自身のプロセスが出力されることがあります。この場合、何が決め手になっているのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • shred
  • ベストアンサー率35% (25/70)
回答No.2

>psを実行し、その実行結果がgrepに渡される この認識は正しいです。プロセス間通信の手法のひとつであるパイプを用いてやり取りされます。但し、「psを実行して」という意味がpsが実行し終えた後でという意味なら間違っています。psとgrepはほぼ同時に起動されます。ぶっちゃけgrepが先に起動されたって何の問題もありません。 >psが/procを見に行く」より早くに起動して、psから出力結果がくるのを待っていた はい、その通りだと思います。

yuchinbou
質問者

お礼

ご丁寧にありがとうございました。 とても良く理解できました。

その他の回答 (1)

  • shred
  • ベストアンサー率35% (25/70)
回答No.1

シェルによりpsとgrepが起動されるわけですが当然時間差が生じます。 まずpsを起動しこの時プリエンプションが起きシェルから他のプロセスに制御が移りさらにpsに制御が移ったとしますpsはprocファイルシステムから起動中のプロセスを探しますがまだgrepが起動されていなければ表示されないというわけです。

yuchinbou
質問者

補足

私は「ps -ef | grep XXX」について、「psを実行し、その実行結果がgrepに渡される」 というイメージを持っておりますが、 まず、この認識は合っていますでしょうか。 >psはprocファイルシステムから起動中のプロセスを探しますが >まだgrepが起動されていなければ表示されないというわけです。 逆に、grep自身のプロセスが表示される場合は、 grepは「psが/procを見に行く」より早くに起動して、 psから出力結果がくるのを待っていた、という感じなのでしょうか。