pgrep は、プロセス名やユーザー名、端末、実行時間などの条件に一致したプロセスの PID を検索するコマンドです。
実務では「プロセス名から PID を調べて kill に渡したい」「特定ユーザーのプロセスだけ調べたい」といった場面で利用されます。
構文(Syntax)
# 基本構文
pgrep [オプション] パターン
# プロセス名にマッチする PID を検索
pgrep プロセス名
# ユーザー・グループを指定
pgrep -u USER パターン
pgrep -G GROUP パターン
# 詳細表示
pgrep -a パターン
パターンは文字列または正規表現でマッチします。- 見つかった PID を改行区切りで出力します。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | パターンに一致するプロセスの PID を表示 | pgrep sshd |
-a | PID とともにコマンドライン全体を表示 | pgrep -a python |
-l | PID とプロセス名を表示 | pgrep -l nginx |
-u USER | 指定ユーザーが所有するプロセスのみ対象 | pgrep -u www-data php |
-G GROUP | 指定グループのプロセスのみ対象 | pgrep -G docker |
-f | プロセス名だけでなくコマンドライン全体に対してマッチ | pgrep -f "python app.py" |
-v | マッチしなかったプロセスを表示(逆マッチ) | pgrep -v ssh |
-x | 完全一致(パターンと完全一致したプロセス名のみ) | pgrep -x sshd |
-n | 最後に起動した(最新の)プロセスのみ | pgrep -n bash |
-o | 最初に起動した(最古の)プロセスのみ | pgrep -o bash |
-c | ヒットしたプロセス数を表示 | pgrep -c sshd |
実行例
例1: SSH デーモンの PID を調べる
pgrep sshd
出力例
1234
1299
例2: nginx プロセスの PID と名前を一覧表示する
pgrep -l nginx
出力例
1450 nginx
1451 nginx
例3: コマンドライン全体から Python のスクリプトを検索(-f)
pgrep -f "python myscript.py"
出力例
3012
例4: 特定ユーザー(www-data)の php-fpm プロセスを検索
pgrep -u www-data php-fpm
出力例
2201
2202
2203
例5(エラー例): 存在しないプロセスを検索した場合
pgrep nonexistent
出力例
(出力なし。終了ステータス1)
関連コマンド
pkillpgrepと同じ条件指定でマッチしたプロセスにシグナルを送る。ps
プロセスの詳細を表示。pgrepで PID を取得してから詳細確認したいときに使用。kill
PID を指定してプロセスを終了する。pgrepと組み合わせることが多い。top/htop
実行中プロセスをリアルタイム監視できる。
備考
- GNU
procpsパッケージのpgrepを前提に記述。 - BusyBox 版ではオプションが少なかったり動作仕様が異なる場合があるため注意。
sudoなしでは他ユーザーのプロセスを検索できない環境もある(セキュリティ設定による)。- 正規表現を使う際は意図しないプロセスにマッチしないよう注意。
参考
- manページ(オンライン版)
https://man7.org/linux/man-pages/man1/pgrep.1.html procps-ngプロジェクト
https://gitlab.com/procps-ng/procps

コメント