Linuxコマンド辞典 pgrep/pkillコマンド(プロセス管理)
プロセス名や属性情報などからプロセスIDを表示し、そのプロセスにシグナルを送信する「pgrep/pkill」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
参考サイト:Man page of INSTALL pgrep
参考サイト:Man page of INSTALL pkill
概要・使用方法
pgrepは、現在実行されているプロセスに対して、引数に指定されたパターンに一致するプロセス名を検索します。そして、マッチしたプロセスに関数するプロセスIDとプロセス名を表示します。パターンには正規表現を利用できます。pkillは現在実行されているプロセスに対して、引数に指定されたパターンに一致するプロセス名を検索し、該当するプロセスに対してシグナルを送信します。
pgrepにシグナル送信機能がついたのがpkillです。シグナルは特定の状況が発生したことをプロセスに伝える手段です。デフォルトではプロセスの終了を通知するSIGTERMを送信します。
書式
$ pgrep [オプション] [パターン]
$ pkill [オプション] [パターン]オプション
| -シグナル –シグナル | マッチしたプロセスに指定した「シグナル」を送る。pkillのみに利用する。シグナルは「kill -l」か、signalを参照する |
| -f –full | 通常プロセス名を対象にパターンマッチングするが、コマンドライン全体を対象にパターンをマッチさせる |
| -l –list-name | プロセスIDとプロセス名を表示する |
| -d –delimiter | 複数プロセスIDを出力する際の区切り文字を指定する(デフォルトは改行) |
| -F ファイル名 –pidfile ファイル名 | 指定したファイルに記載されたプロセスIDを読み込む。複数行書かれていても1行目のみを読み込む。pkillで利用する |
| -P プロセスID –parent プロセスID | 指定したプロセスIDが親プロセスとなるプロセスを表示する。 |
| -n –newest | マッチしたプロセスの中から最新のプロセスを表示する。 |
| -u 実効ユーザID –euid 実効ユーザID | 実効ユーザIDにマッチするプロセスを表示する。 |
| -U ユーザID –uid ユーザID | ユーザIDにマッチするプロセスを表示する |
| -G グループID –group グループID | グループIDがマッチするプロセスを表示する |
| -v –inverse | マッチしないプロセスIDを表示する |
| -x –exact | 指定したパターンが完全にマッチするプロセス名のプロセスIDを表示する |
シグナルについて
シグナルの一覧は、/usr/include/linux/signal.hlにも記述されています。
| 数字 | シグナル | 説明 |
|---|---|---|
| 1 | SIGHUP | ハングアップ |
| 2 | SIGINT | 割り込みする(Ctrl+c) |
| 9 | SIGKILL | 強制終了する |
| 15 | SIGTERM | プロセス終了 |
| 18 | SIGCONT | 停止中プロセスを再開する |
| 19 | SIGSTOP | プロセスを一時停止する |
プロセス名からプロセスIDを表示する
$ pgrep -l プロセス名実行結果
[suna@localhost ~]$ pgrep -l httpd
3006 httpd
694188 httpd
694189 httpd
694190 httpd
694191 httpd
695664 httpd
[suna@localhost ~]$ プロセスIDを「,」区切りで出力
$ pgrep -d "," プロセス名実行結果
[suna@localhost ~]$ pgrep -d "," httpd
3006,694188,694189,694190,694191,695664
プロセス名でプロセスを強制終了させる。
$ pkill プロセス名実行結果
[root@localhost suna]# pgrep -l httpd
778670 httpd
778672 httpd
778673 httpd
778674 httpd
778675 httpd
[root@localhost suna]# pkill httpd
[root@localhost suna]# pgrep -l httpd特定ユーザーのプロセスを強制終了させる。
$ pkill -U ユーザー名 プロセス名実行結果
[suna@localhost ~]$ pkill -U suna top