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
この例は、次の属性を持つプロセスを検出します。
pkill の機能は pgrep の機能と同等ですが、検出したプロセスのプロセス ID を出力するのではなく、kill(1) と同様に、各プロセスにシグナルを送信します。シグナルの名前または番号は pkill への最初のコマンド行オプションとして指定できます。
サポートしているオプションは、次のとおりです。
指定されたリスト内にプロセス契約 ID があるプロセスだけに一致します。
一致したプロセス ID 間に置かれる区切り文字を指定します。–d オプションを指定しない場合、デフォルトの区切り文字は復帰改行です。–d オプションは pgrep へのオプションとして指定した場合にのみ有効です。
正規表現 pattern の照合は、プロセスの引数を含む文字列全体 (/proc/nnnnn/psinfo ファイルの pr_psargs フィールドから取得) に対して行われます。–f オプションを指定しないと、正規表現 pattern の照合は、実行可能ファイルの名前 (/proc/nnnnn/psinfo ファイルの pr_fname フィールドから取得) に対してのみ行われます。
指定したリスト内にプロセスグループ ID があるプロセスだけに一致します。リストにグループ 0 がある場合、これは pgrep または pkill プロセスのプロセスグループ ID として解釈されます。
指定したリスト内に実グループ ID があるプロセスだけに一致します。各グループ ID はグループ名または数値のグループ ID のどちらでも指定できます。
指定したリスト内にプロジェクト ID があるプロセスだけに一致します。各プロジェクト ID はプロジェクト名または数値のプロジェクト ID のどちらでも指定できます。
詳細出力形式。一致したプロセスの名前とID を出力します。–f オプションが指定されているかどうかによって (前述の説明を参照)、プロセス名は pr_psargs または pr_fname フィールドから取得されます。–l オプションは pgrep へのオプションとして指定した場合にのみ有効です。
指定した条件すべてを満たすプロセスの中で、最新の (最後に作成された) プロセスだけに一致します。このオプションは、–o オプションと同時には使用できません。
指定した条件すべてを満たすプロセスの中で、もっとも古い (最初に作成された) プロセスだけに一致します。このオプションは、–n オプションと同時には使用できません。
指定したリスト内に親プロセス ID があるプロセスだけに一致します。
指定したリスト内にセッション ID があるプロセスだけに一致します。リストのセッション ID 0 がある場合、これは pgrep または pkill プロセスのセッション ID として解釈されます。
指定したリストの端末に関連するプロセスだけに一致します。各端末は、/dev 内にある端末へのパス名 (つまり、/dev/ 以降のパス名) として指定します。たとえば、term/a や pts/0 などです。
指定したリストのタスク ID があるプロセスだけに一致します。リストにタスク ID 0 がある場合、これは pgrep または pkill プロセスのタスク ID として解釈されます。
指定したリストの実効ユーザー ID があるプロセスだけに一致します。各ユーザー ID はログイン名または数値のユーザー ID のどちらでも指定できます。
指定したリストの実ユーザー ID があるプロセスだけに一致します。各ユーザー ID はログイン名または数値のユーザー ID のどちらでも指定できます。
一致の意味を反転します。指定した条件を「満さない」すべてのプロセスに一致します。
指定した pattern に引数の文字列または実行可能ファイル名が完全に一致するプロセスだけに一致します。「完全に一致する」というのは、プロセス引数の文字列または実行可能ファイルの名前のすべての文字が pattern に一致することを意味します。
指定されたリスト内にゾーン ID があるプロセスだけに一致します。各ゾーン ID は、ゾーン名または数値のゾーン ID のどちらでも指定できます。このオプションは、グローバルゾーンで実行する場合にのみ便利です。pkill ユーティリティーを使用して、ほかのゾーン内のプロセスにシグナルを送信する場合、送信元のプロセスは {PRIV_PROC_ZONE} 特権を表明しておく必要があります (privileges(7) を参照)。
一致した各プロセスに送信するシグナルを指定します。シグナルを指定しないと、デフォルトで SIGTERM が送信されます。signal は signal.h(3HEAD) で定義されているシンボル名 (ただし SIG 接頭辞は付けない) または対応するシグナル番号 (10 進数) のどちらでも指定できます–signal オプションは pkill への最初のオプションとして指定した場合にのみ有効です。
次のオペランドを指定できます。
実行可能ファイルの名前またはプロセス引数の文字列全体と照合させる拡張正規表現 (ERE) パターンを指定します。ERE 構文の詳細は、regex(7) を参照してください。
sendmail のプロセス ID を取得します。
example% pgrep -x -u root sendmail 283使用例 2 プロセスを強制終了する
最後に作成された xterm を強制終了します。
example% pkill -n xterm
次の終了ステータスが返されます。
1 つまたは複数のプロセスが一致しました。
どのプロセスも一致しなかった。
無効なコマンド行オプションが指定された。
致命的なエラーが発生しました。
プロセス情報ファイル
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
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 のメタキャラクタが含まれており、そのメタキャラクタがシェルのメタキャラクタでもある場合、そのメタキャラクタを適切なシェル引用符で囲む必要があります。
終了したプロセスは、pgrep と pkill のいずれでも検出することはできません。
現在の pgrep または pkill プロセスは、自身を照合候補とすることはありません。