LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルでプロセスを検索・終了する際、ps aux | grep でPIDを調べてから kill で終了する、という手順が一般的です。しかし、pgrepとpkill を使えば、この操作をもっとシンプルに行えます。
本記事では、プロセス名でPIDを検索する pgrep と、プロセス名で直接終了できる pkill の使い方を、具体的なコマンド例とともに解説します。
pgrepコマンドとは
pgrepは、プロセス名のパターンに一致するプロセスのPID(プロセスID)を表示するコマンドです。psとgrepを組み合わせる従来の方法と比べて、コマンドが短く、grep自身のプロセスが混入しないメリットがあります。
pgrepの基本構文
pgrep [オプション] パターンpgrepの基本的な使い方
プロセス名を指定してPIDを取得できます。
pgrep nginx12345678nginxNginx [エンジンエックス]高性能なWebサーバー・リバースプロキシという名前のプロセスのPIDが一覧で出力されます。
pkillコマンドとは
pkillは、プロセス名のパターンに一致するプロセスにシグナルを送信するコマンドです。デフォルトではSIGTERM(終了シグナル)が送られ、プロセスを終了させます。
PIDを調べてからkillを実行する手順が不要になるため、プロセスの終了操作を1コマンドで完結できます。
pkillの基本構文
pkill [オプション] パターンpkillの基本的な使い方
プロセス名を指定して終了できます。
pkill nginx上記コマンドで、nginxという名前のプロセスすべてにSIGTERMが送られます。
pgrepの主要オプションと使用例
-l:PIDとプロセス名を表示する
-lオプションを付けると、PIDに加えてプロセス名も表示されます。
pgrep -l nginx1234 nginx5678 nginx-a:PIDとコマンドライン全体を表示する
-aオプションを使うと、実行時のコマンドライン(引数含む)全体が表示されます。
pgrep -a nginx1234 nginx: master process /usr/sbin/nginx5678 nginx: worker process-f:コマンドライン全体を検索対象にする
デフォルトではプロセス名のみが検索対象ですが、-fオプションを使うと コマンドライン全体(引数を含む) が検索対象になります。
pgrep -f "python script.py"2345pythonというプロセス名だけでなく、引数のscript.pyを含めてマッチングするため、特定のスクリプトを実行しているプロセスをピンポイントで検索できます。
-u:ユーザーを指定して検索する
-uオプションで、特定のユーザーが実行しているプロセスに絞り込めます。
pgrep -u www-data345634573458-c:マッチしたプロセスの数を表示する
-cオプションは、マッチしたプロセスのPIDではなく件数を返します。
pgrep -c nginx5プロセスの起動数を確認したい場合に便利です。
-x:プロセス名の完全一致で検索する
-xオプションを使うと、部分一致ではなく完全一致で検索できます。
pgrep -x sshsshに完全一致するプロセスのみが検索され、sshdは含まれません。
注意:プロセス名は15文字までしかマッチしない
pgrepやpkillがマッチングに使用するプロセス名は、/proc/PID/statに記録された最大15文字に制限されています。そのため、node-application-serverのような16文字以上のプロセス名は途中で切れてしまい、意図した通りにマッチしない場合があります。長いプロセス名を扱う場合は、-fオプションを使ってコマンドライン全体(/proc/PID/cmdline)を検索対象にしてください。15文字を超えるプロセス名の場合 # プロセス名が切れてマッチしない可能性があるpgrep node-application-server# -f でコマンドライン全体を対象にすれば確実pgrep -f node-application-server
pkillの主要オプションと使用例
pkillはpgrepと同じオプション(-f、-u、-xなど)に加え、シグナル指定のオプションが使えます。
シグナルを指定して送信する
デフォルトのSIGTERMではプロセスが終了しない場合、-SIGKILL(-9)で強制終了できます。
pkill nginxpkill -9 nginx注意:
-9(SIGKILL)は最終手段です。プロセスが後処理を行う機会なく即座に終了するため、まずはSIGTERM(デフォルト)で正常終了を試みてください。
-f:コマンドライン全体を対象に終了する
pkill -f "python script.py"-fオプションはpgrepと同様に、引数を含めたコマンドライン全体でマッチングします。
-u:特定ユーザーのプロセスを終了する
pkill -u testuser指定ユーザーが実行しているすべてのプロセスを終了させます。
注意:
-uのみで実行すると、そのユーザーの全プロセスが対象になります。特定のプロセスのみ終了したい場合は、プロセス名やパターンと組み合わせて使用してください。
-u とプロセス名を組み合わせる
pkill -u www-data nginxwww-dataユーザーが実行しているnginxプロセスのみを終了します。
pgrepとpkillのオプションまとめ
| オプション | 説明 |
|---|---|
-l | PIDとプロセス名を表示する(pgrepのみ) |
-a | PIDとコマンドライン全体を表示する(pgrepのみ) |
-f | コマンドライン全体を検索対象にする |
-u ユーザー名 | 指定ユーザーのプロセスに絞り込む |
-x | プロセス名の完全一致で検索する |
-c | マッチしたプロセス数を表示する(pgrepはPIDの代わりに件数を表示、pkillはシグナルを送ったプロセス数を表示) |
-9(-SIGKILL) | 強制終了シグナルを送信する(pkillのみ) |
-15(-SIGTERM) | 終了シグナルを送信する(pkillのデフォルト) |
pgrep・pkillの安全な使い方
pkillは強力なコマンドのため、意図しないプロセスを終了してしまうリスクがあります。以下の手順で安全に使用してください。
ステップ1:pgrepで対象を確認する
pkillを実行する前に、必ず同じ条件でpgrepを実行し、対象プロセスが正しいか確認します。
pgrep -la nginx1234 nginx: master process /usr/sbin/nginx5678 nginx: worker processステップ2:問題なければpkillを実行する
確認した結果が意図した通りであれば、pkillを実行します。
pkill nginxステップ3:プロセスの終了を確認する
プロセスが正しく終了したか、再度pgrepで確認します。
pgrep -l nginx出力がなければ、すべてのnginxプロセスが正常に終了しています。
ps aux | grep との違い
従来のps aux | grepを使ったプロセス検索と比較すると、pgrep・pkillには以下のメリットがあります。
従来の方法(ps aux | grep)
ps aux | grep nginx | grep -v grepgrepコマンド自身がpsの結果に含まれてしまうため、grep -v grepで除外する必要があります。さらに、PIDを目視で確認してからkillを実行する必要があり、手順が多くなります。
ps aux | grep nginx | grep -v grep# 出力からPIDを確認kill 1234pgrep・pkillを使った方法
# PIDの検索pgrep -l nginx
# プロセスの終了pkill nginxgrep自身の混入を気にする必要がなく、PIDの確認と終了がそれぞれ1コマンドで完結します。
| 比較項目 | ps aux | grep | pgrep / pkill |
|---|---|---|
| grep自身の混入 | あり(grep -v grepが必要) | なし |
| PID取得のしやすさ | 目視で確認が必要 | PIDのみが出力される |
| プロセス終了 | PID確認後にkillを別途実行 | pkillで1コマンド完結 |
| コマンドの簡潔さ | 長くなりがち | 短く書ける |
まとめ
pgrepはプロセス名でPIDを検索するコマンドpkillはプロセス名でプロセスを直接終了できるコマンド-fオプションでコマンドライン全体を検索対象にできる-uオプションで特定ユーザーのプロセスに絞り込めるpkillの実行前に、必ずpgrepで対象プロセスを確認するps aux | grepより簡潔で、grep自身の混入もない
関連コマンド プロセスの状態を詳しく確認したい場合は、
psコマンドの出力の見方について以下の記事を参考にしてください。ITナレッジライフ【Linux】psコマンドの見方・読み方をわかりやすく解説
Linuxのpsコマンドの実行結果の見方・読み方を解説します。ps auxやps -efで表示される各項目(PID、STAT、%CPUなど)の意味から、プロセス状態(STAT)の詳細まで初心者向けにわかりやすくまとめました。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。