なぜプロセスをpgrepできないのですか?

なぜプロセスをpgrepできないのですか?
$ ps aux | grep -i ssh
USER      4364  0.0  0.0   9004  1032 ?        Ss   12:20   0:00 ssh -v -fND localhost:4000 USERNAME@SERVER-IP-ADDRESS

$ pgrep localhost:4000

なぜこれがうまくいかないのですか?

答え1

デフォルトでは、pgrep(1)プロセス名のみが一致します。コマンドライン全体を一致させるには、次の-fオプションを使用します。

$ pgrep -f localhost:4000

答え2

見てpgrep のマニュアルページ。これはpsと複数の列を実行してからテキスト出力をgrepingするためのエイリアスではありません。実際、特定のフィールドの値を検索します。デフォルトでは、次のように見ます。プロセス名検索して戻るときPID。オプションを追加してコマンドライン全体を検索できます-f。実行中のプロセスの端末やグループIDの一致など、役に立つ可能性がある他のいくつかのフィールドを検索することもできます。

関連情報