なぜps aux |追加ヒットリターン[重複]

なぜps aux |追加ヒットリターン[重複]

現在実行中のkateエディタのPIDを知りたいとしましょう(kateは単なる例であり、多くのプログラムで説明したのと同じ方法で動作します)。だから私はps aux | grep kate

出力は次のとおりです。

seifert     35523  0.0  0.2 448724 25144 ?        Sl   08:56   0:33 /bin/kate -b
seifert   1499179  0.0  0.0  12196   656 pts/0    S+   21:52   0:00 grep --color=auto kate

最初の行は私が期待するものです。しかし、2番目は何ですか?

答え1

と入力するとps aux|grep kateこれが始まりますgrep kategrep kateこれは次のように処理されますgrep kate(エイリアスがある場合(この例のように)、より複雑です)。そして部分文字列がgrep kateあるので、対応する行が選択されます。kate

kategrepコマンドが必要になる前にプロセスリストからプロセスを取得するために必要なpgrepコマンドにすることができます。

編集:pgrep pgrep私も自分で見つけることができませんでした。

答え2

これは、検索中のプロセスと入力したコマンドの行を返すためですgrep kate

したがって、応答を受け取るには、次のコマンドを使用します。

ps -fp $(pgrep -f '<your_search>')

pgrep -fプロセスを開始するための完全なコマンド(引数を含む)に基づいてプロセスのPIDを取得します。

答え3

Wayne Wernerの答えを引用すると、次のようになります。

文字の周りに角かっこを入れて文字列の周りに引用符を入れると、正規表現を検索できます。つまり、「f」の後に「nord」文字を探してください。」しかし、パターンに角かっこを入れたので、「f」の後に「]」が表示され、結果リストにgrepは表示されません。ニト!

[f]を使用すると、出力の右側のdiffからgrepコマンドの最後の行を取得できません。 beetwen "ps aux | grep firefox" と "ps aux | grep [f]irefox" は最後の出力行です。

psの結果に「grep」が表示されるのを防ぐ方法は?

これを望まない場合は、使用可能なプロセスのリストps aux | grep 'kate'で最後のgrepコマンドを参照してください(例:process / command)。

ps aux | grep '[k]ate'

[]検索するすべてのコマンド/プロセスでこの角かっこを使用できます。

ps aux | grep '[c]ommand' or '[p]rocess'

pidだけをインポートするためにも使用できます。

pidof kate

または

pgrep kate

または

ps -ef | grep [k]ate

関連情報