Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

pkill(1)

名前

pgrep, pkill - 名前またはほかの属性によるプロセスの検出またはシグナル送信

形式

pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]
pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]

説明

pgrep ユーティリティーは、システム上のアクティブなプロセスを調べて、コマンド行に指定した条件を満たす属性を持つプロセスのプロセス ID を報告します。各プロセス ID は 10 進数値として出力され、プロセス ID は区切り文字 (デフォルトは復帰改行) で区切られます。コマンド行で属性オプションに値を指定するときは、複数の値をコンマで区切って指定できます。たとえば、

pgrep -G other,daemon

この例は、実グループ ID が other または daemon であるプロセスを検出します。条件となるオプションを複数指定すると、pgrep は、条件オプションの論理に一致する属性を持つプロセスを検出します。たとえば、

pgrep -G other,daemon -U root,daemon

この例は、次の属性を持つプロセスを検出します。

  • (実グループ ID が other または daemon であり) かつ
  • (実ユーザー ID が root または daemon である)

pkill の機能は pgrep の機能と同等ですが、検出したプロセスのプロセス ID を出力するのではなく、kill(1) と同様に、各プロセスにシグナルを送信します。シグナルの名前または番号は pkill への最初のコマンド行オプションとして指定できます。

オプション

サポートしているオプションは、次のとおりです。

–c ctidlist

指定されたリスト内にプロセス契約 ID があるプロセスだけに一致します。

–d delim

一致したプロセス ID 間に置かれる区切り文字を指定します。–d オプションを指定しない場合、デフォルトの区切り文字は復帰改行です。–d オプションは pgrep へのオプションとして指定した場合にのみ有効です。

–f

正規表現 pattern の照合は、プロセスの引数を含む文字列全体 (/proc/nnnnn/psinfo ファイルの pr_psargs フィールドから取得) に対して行われます。–f オプションを指定しないと、正規表現 pattern の照合は、実行可能ファイルの名前 (/proc/nnnnn/psinfo ファイルの pr_fname フィールドから取得) に対してのみ行われます。

–g pgrplist

指定したリスト内にプロセスグループ ID があるプロセスだけに一致します。リストにグループ 0 がある場合、これは pgrep または pkill プロセスのプロセスグループ ID として解釈されます。

–G gidlist

指定したリスト内に実グループ ID があるプロセスだけに一致します。各グループ ID はグループ名または数値のグループ ID のどちらでも指定できます。

–J projidlist

指定したリスト内にプロジェクト ID があるプロセスだけに一致します。各プロジェクト ID はプロジェクト名または数値のプロジェクト ID のどちらでも指定できます。

–l

詳細出力形式。一致したプロセスの名前とID を出力します。–f オプションが指定されているかどうかによって (前述の説明を参照)、プロセス名は pr_psargs または pr_fname フィールドから取得されます。–l オプションは pgrep へのオプションとして指定した場合にのみ有効です。

–n

指定した条件すべてを満たすプロセスの中で、最新の (最後に作成された) プロセスだけに一致します。このオプションは、–o オプションと同時には使用できません。

–o

指定した条件すべてを満たすプロセスの中で、もっとも古い (最初に作成された) プロセスだけに一致します。このオプションは、–n オプションと同時には使用できません。

–P ppidlist

指定したリスト内に親プロセス ID があるプロセスだけに一致します。

–s sidlist

指定したリスト内にセッション ID があるプロセスだけに一致します。リストのセッション ID 0 がある場合、これは pgrep または pkill プロセスのセッション ID として解釈されます。

–t termlist

指定したリストの端末に関連するプロセスだけに一致します。各端末は、/dev 内にある端末へのパス名 (つまり、/dev/ 以降のパス名) として指定します。たとえば、term/apts/0 などです。

–T taskidlist

指定したリストのタスク ID があるプロセスだけに一致します。リストにタスク ID 0 がある場合、これは pgrep または pkill プロセスのタスク ID として解釈されます。

–u euidlist

指定したリストの実効ユーザー ID があるプロセスだけに一致します。各ユーザー ID はログイン名または数値のユーザー ID のどちらでも指定できます。

–U uidlist

指定したリストの実ユーザー ID があるプロセスだけに一致します。各ユーザー ID はログイン名または数値のユーザー ID のどちらでも指定できます。

–v

一致の意味を反転します。指定した条件を「満さない」すべてのプロセスに一致します。

–x

指定した pattern に引数の文字列または実行可能ファイル名が完全に一致するプロセスだけに一致します。「完全に一致する」というのは、プロセス引数の文字列または実行可能ファイルの名前のすべての文字が pattern に一致することを意味します。

–z zoneidlist

指定されたリスト内にゾーン ID があるプロセスだけに一致します。各ゾーン ID は、ゾーン名または数値のゾーン ID のどちらでも指定できます。このオプションは、グローバルゾーンで実行する場合にのみ便利です。pkill ユーティリティーを使用して、ほかのゾーン内のプロセスにシグナルを送信する場合、送信元のプロセスは {PRIV_PROC_ZONE} 特権を表明しておく必要があります (privileges(7) を参照)。

signal

一致した各プロセスに送信するシグナルを指定します。シグナルを指定しないと、デフォルトで SIGTERM が送信されます。signalsignal.h(3HEAD) で定義されているシンボル名 (ただし SIG 接頭辞は付けない) または対応するシグナル番号 (10 進数) のどちらでも指定できますsignal オプションは pkill への最初のオプションとして指定した場合にのみ有効です。

オペランド

次のオペランドを指定できます。

pattern

実行可能ファイルの名前またはプロセス引数の文字列全体と照合させる拡張正規表現 (ERE) パターンを指定します。ERE 構文の詳細は、regex(7) を参照してください。

使用例 1 プロセス ID を取得する

sendmail のプロセス ID を取得します。

example% pgrep -x -u root sendmail
283
使用例 2 プロセスを強制終了する

最後に作成された xterm を強制終了します。

example% pkill -n xterm

終了ステータス

次の終了ステータスが返されます。

0

1 つまたは複数のプロセスが一致しました。

1

どのプロセスも一致しなかった。

2

無効なコマンド行オプションが指定された。

3

致命的なエラーが発生しました。

ファイル

/proc/nnnnn/psinfo

プロセス情報ファイル

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/core-os

関連項目

kill(1), proc(1), ps(1), truss(1), kill(2), signal.h(3HEAD), proc(5), attributes(7), privileges(7), regex(7), zones(7)

どちらのユーティリティーも /proc/nnnnn/psinfo ファイルの pr_fname または pr_psargs フィールドに対して ERE で pattern 引数を照合することができます。これらの文字列の長さ制限は <sys/procfs.h> に定義されています。現在の制限よりも長い文字列に一致する可能性があるパターンを使用すると、予期したプロセスと一致しないことがあります。

pattern 引数に ERE のメタキャラクタが含まれており、そのメタキャラクタがシェルのメタキャラクタでもある場合、そのメタキャラクタを適切なシェル引用符で囲む必要があります。

終了したプロセスは、pgreppkill のいずれでも検出することはできません。

現在の pgrep または pkill プロセスは、自身を照合候補とすることはありません。