概要
条件に一致するプロセスを検索し、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分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
自分で起動したsleepをpgrepで見付け、-aでコマンドラインまで確認します。
-
-cを使い、特定名のプロセスが何件あるか数えます。
資格試験との関連
-
LinuC レベル1
範囲: 1.01.4 プロセスの生成、監視、終了根拠: officialLinuCレベル1では、プロセスの確認、監視、終了の基礎が問われます。
-
LPIC-1
範囲: 103.5 Create, monitor and kill processes根拠: officialLPIC-1では、プロセスの確認、監視、終了の基礎が問われます。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、pgrepはLinux運用の基礎体力を支える重要なコマンドです。
実行結果サンプル
-
sleep 300 & pgrep sleep12345 -
pgrep -a sleep12345 sleep 300
戻り値コード
- 0 一致するプロセスが見つかりました。
- 1 一致するプロセスが見つかりませんでした。
- >1 不正な条件指定などで処理できませんでした。
使用例
pgrep sshdpgrep -u root sshdpgrep -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で一致なしを表すため、スクリプトではこれを分岐に使えます。
関連用語
参照リンク
- カテゴリー: Process And Jobs
- レベル: Practical
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎