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にも記述されています。

数字シグナル説明
SIGHUPハングアップ
SIGINT割り込みする(Ctrl+c)
SIGKILL強制終了する
15SIGTERMプロセス終了
18SIGCONT停止中プロセスを再開する
19SIGSTOPプロセスを一時停止する

プロセス名からプロセス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