pgrep – 条件に一致するプロセスのPIDを検索する

一覧・詳細

pgrep は、プロセス名やユーザー名、端末、実行時間などの条件に一致したプロセスの PID を検索するコマンドです。
実務では「プロセス名から PID を調べて kill に渡したい」「特定ユーザーのプロセスだけ調べたい」といった場面で利用されます。

構文(Syntax)

# 基本構文
pgrep [オプション] パターン

# プロセス名にマッチする PID を検索
pgrep プロセス名

# ユーザー・グループを指定
pgrep -u USER    パターン
pgrep -G GROUP   パターン

# 詳細表示
pgrep -a パターン
  • パターン は文字列または正規表現でマッチします。
  • 見つかった PID を改行区切りで出力します。

主なオプション一覧

オプション説明使用例
(なし)パターンに一致するプロセスの PID を表示pgrep sshd
-aPID とともにコマンドライン全体を表示pgrep -a python
-lPID とプロセス名を表示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)

関連コマンド

  • pkill
    pgrep と同じ条件指定でマッチしたプロセスにシグナルを送る。
  • ps
    プロセスの詳細を表示。pgrep で PID を取得してから詳細確認したいときに使用。
  • kill
    PID を指定してプロセスを終了する。pgrep と組み合わせることが多い。
  • top / htop
    実行中プロセスをリアルタイム監視できる。

備考

  • GNU procps パッケージの pgrep を前提に記述。
  • BusyBox 版ではオプションが少なかったり動作仕様が異なる場合があるため注意。
  • sudo なしでは他ユーザーのプロセスを検索できない環境もある(セキュリティ設定による)。
  • 正規表現を使う際は意図しないプロセスにマッチしないよう注意。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント