pgrep ピーグレップ

英語表記pgrep

日本語表記プロセス検索

正式名称pgrep

危険度安全

What does it mean?

条件に一致するプロセスを検索し、PIDを表示します。名前、ユーザー、完全コマンドラインなどで絞れるため、調査と自動化の両方で便利です。

Command Quest

pgrep を今日の道具にする

条件に一致するプロセスを検索し、PIDを表示します。名前、ユ...

$ pgrep [オプション] パターン
関連用語2
次のコマンド0
FAQ2
参照4

概要

条件に一致するプロセスを検索し、PIDを表示します。名前、ユーザー、完全コマンドラインなどで絞れるため、調査と自動化の両方で便利です。

基本構文

pgrep [オプション] パターン

詳細解説

pgrepは、実行中プロセスの中から条件に一致するものを探し、そのPIDを表示するコマンドです。名前一致、ユーザー一致、完全コマンドライン一致、件数表示などができ、ps | grepより意図が明確で誤検出を減らしやすいのが利点です。

実務では、対象プロセスのPID取得、稼働確認、監視スクリプト、後続のkillやreniceへの引き渡しで非常によく役立ちます。

ただし、名前が広過ぎると複数PIDが返り、想定外の対象まで含めることがあります。

このコマンドを使う場面

特定サービスのPID取得、稼働確認、監視スクリプト、killやreniceの前段処理に使います。

まず安全に試す方法

1. sleep 300 &
2. pgrep sleep
3. pgrep -a sleep
4. pgrep -c sleep

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. 自分で起動したsleepをpgrepで見付け、-aでコマンドラインまで確認します。

  2. -cを使い、特定名のプロセスが何件あるか数えます。

資格試験との関連

  • LinuC レベル1
    範囲: 1.01.4 プロセスの生成、監視、終了
    根拠: official
    LinuCレベル1では、プロセスの確認、監視、終了の基礎が問われます。
  • LPIC-1
    範囲: 103.5 Create, monitor and kill processes
    根拠: official
    LPIC-1では、プロセスの確認、監視、終了の基礎が問われます。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    試験横断で、pgrepはLinux運用の基礎体力を支える重要なコマンドです。

オプション

  • -f
    完全コマンドラインを対象に検索します。
    pgrep -f "python app.py"
  • -u ユーザー
    実行ユーザーで絞ります。
    pgrep -u root sshd
  • -a
    PIDと完全コマンドラインを表示します。
    pgrep -a sleep
  • -c
    件数だけ表示します。
    pgrep -c nginx
  • -x
    完全一致で検索します。
    pgrep -x cron

実行結果サンプル

  • sleep 300 & pgrep sleep
    12345
  • pgrep -a sleep
    12345 sleep 300

戻り値コード

  • 0 一致するプロセスが見つかりました。
  • 1 一致するプロセスが見つかりませんでした。
  • >1 不正な条件指定などで処理できませんでした。

使用例

  • pgrep sshd
  • pgrep -u root sshd
  • pgrep -f "python app.py"
  • pgrep -c nginx

よくあるエラー

  • 想定より多くのPIDが返ってきた
    原因: 検索条件が広過ぎます。
    対処: -x、-u、-fなどで条件を具体化します。
  • ps | grepと違って何も出ない
    原因: 既定ではプロセス名ベースで一致し、完全コマンドラインまでは見ていない可能性があります。
    対処: -fを付けて完全コマンドライン検索を試します。

導入・互換性情報

Linuxではprocps-ng実装が一般的です。パターン解釈や既定の一致対象は実装差がありうるため、完全一致やユーザー制限を明示すると安全です。

注意点 / セキュリティリスク

危険度は低いですが、条件が広いと複数PIDを返し、後続処理で広く影響することがあります。

FAQ

  • Q. ps | grepより何が良いですか。
    A. grep自身を拾ってしまうような誤検出を避けやすく、意図が明確です。
  • Q. 見つからなかった時も正常ですか。
    A. はい。終了コード1で一致なしを表すため、スクリプトではこれを分岐に使えます。

関連用語

  • orphan process
  • memory leak

参照リンク

関連記事