私は走るps aux | grep somethinghere
。
出力はgrep somethinghere
実行中のプロセスとして表示されます。
私の質問はps aux
最初に完了してからgrep somethinghere
出力を実行してはいけませんか?おそらく完了する必要はないかもしれませんがps
(2つの間にパイプがあります)、実行ではなく最初のプロセスとして実行する必要がありますgrep
。
出力はgrep
以前に実行されたことを意味しますps
!
これはどうですか?ps
出力はパイプで接続する必要があるため、最初に実行しないでください。同時に実行しても出力にgrep
常に表示されるのはなぜですか?grep
時々見えませんかgrep
?
答え1
あなたは少し見なければなりません。このページ。
編集、今あなたが何を求めているのか理解しています。
おそらくこれよりよく説明するのに役立ちます。
コマンドが実行される順序は実際には重要ではなく、保証されません。 Pipe(), fork(), dup() および execve() の難解な詳細は取り除き、シェルは最初にプロセス間でデータが流れるパイプであるパイプを生成し、次にプロセスに接続されたパイプで終わるプロセスを生成します。 。実行中の最初のプロセスは、2番目のプロセスの入力を待つことをブロックするか、2番目のプロセスがパイプからデータの読み取りを開始するのを待つことをブロックできます。これらの待ち時間はランダムに長くなる可能性がありますが、問題ではありません。プロセスがどの順序で実行されても、最終的にデータは送信され、すべてがうまく機能します。
答え2
OPは、「grep somethinghere
出力リストからプロセスを削除する方法」を意味すると思います。これを行うには12の方法があります。ps
somethinghere
- 番号のみが必要な場合に使用できます。
pgrep -l somethinghere
- ダブルgrep
ps aux | grep somethinghere | grep -v grep
(よく会うのにあまり好きではない) - 正規表現を作る
somethinghere
ps aux | grep [s]omethinghere