Linux / コマンド / pgrep - 条件に合ったプロセスIDを検索
pgrepはプロセス名やユーザーなどの条件で実行中のプロセスIDを探します。対象PIDを確認するコマンドであり、それ自体でプロセスを終了することはありません。
パターンはプロセス名に対する拡張正規表現です。grepの正規表現 と同様に、記号にも意味があるため、シェルの展開を避ける引用符も必要に応じて使います。名前全体を正規表現に一致させる場合は -x、全コマンドラインまで確認するには-fを使用します。-fはより広く一致する可能性があるため、結果を必ず確認してください。
基本的な文法
pgrep [オプション] パターン
インストールされている実装とオプションは、配布版によって異なる場合があります。man pgrepで現在のシステムの説明を確認してください。
使用例
名前でPID検索
一致するPIDを行ごとに出力します。
pgrep sshd
PIDとコマンドラインを一緒に表示
どの作業が選ばれたか表示してミスを減らします。
pgrep -a sshd
ユーザーと正確な名前で制限
alice を実在する対象ユーザーへ置き換え、実効ユーザーがそのユーザーで、名前全体が python3 に一致するプロセスへ絞ります。
pgrep -u alice -x python3
検索結果がPIDで表示される理由
pgrepは条件に合うプロセスのPIDを出力します。-aを使うとPIDと全コマンドラインを一緒に表示して確認しやすくなります。
pgrep -a sshd
例の出力(当該プロセスが実行中のシステムで):
1234 /usr/sbin/sshd -D
何も表示されない場合は、一致するプロセスがないか、検索権限・条件の問題である可能性があります。基本検索はプロセス名を対象としており、全コマンドラインまで検索したい場合は-fを使用します。広いパターンは予期しないプロセスを含む可能性があるため、終了コマンドに渡す前に結果を確認してください。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
-a |
PIDと全コマンドラインを一緒に表示します。 |
-x |
プロセス名全体がパターンに一致する必要があります。 |
-f |
プロセス名の代わりに全コマンドラインを検査します。 |
-u ユーザー |
実効ユーザーIDで範囲を制限します。 |
-n / -o |
最新または最も古い一致を一つ選びます。 |
使用する際の注意点
Linuxのプロセス名とコマンドラインは別です。procps-ngの名前検索には通常、/proc/PID/stat の15バイト(ASCII文字なら15文字)の名前が使われるため、長い名前では全コマンドラインを調べる -f を検討します。ただし -a は表示を詳しくする指定であり、検索対象を変える -f とは異なります。-x を付けても正規表現の記号が無効になるわけではありません。得たPIDを後の操作に使う前に、psによるPIDとコマンドの確認 も行います。
よくある質問
pgrepの結果がない場合、それはエラーですか?
procps-ngのpgrepでは、1件以上一致すれば終了状態0、一致がなければ1です。構文エラーの2や致命的エラーの3とは区別します。ただし対象が見えない理由は条件や実行環境にもあるため、「見つからない」だけでサービス停止と断定しません。
公式ドキュメント
オプションや終了状態は、procps-ngの公式pgrep・pkillマニュアル で確認できます。




