この節では、Solaris 7 リリースのシステム性能を管理するための新しい機能について説明します。
以前の Solaris リリースでは、ps、grep、egerp、awk、kill コマンドを組み合わせてプロセスを管理していましたが、pgrep および pkill コマンドがこれらのコマンドに置き換わります。
pgrep コマンドは、システム上のアクティブなプロセスを調べ、その属性がコマンド行に指定された基準に合っていればそのプロセス ID を表示します。
pkill コマンドは pgrep コマンド同じ動作をしますが、一致したそれぞれのプロセス ID を表示する代わりに、kill(2) によりシグナルで通知する点が異なります。
このコマンドを使用する利点は、次のとおりです。
プロセスは、その実ユーザー ID または実効ユーザー ID、グループ ID、あるいは、その親プロセス ID またはプロセスグループ ID などで検索できます。
各プロセス ID は 10進数で表示され、次のプロセス ID とは改行で分離されます。-d オプションで独自の区切り文字を指定すれば、プロセス間の区切り文字を変更できます。
コンマで区切ることにより、同じコマンド行に複数のオプションを指定できます。
終了したプロセスは、pgrep または pkill コマンドのいずれでも検査対象にはなりません。
実行中の pgrep や pkill プロセスそれ自体は、検査の対象にはなりません。
pkill -signal を使用すれば、HUP(1) や KILL(9) などのシグナル値を記号値または数値として指定できます。シグナル値を指定する場合は、その値はコマンド行の最初のオプションでなければなりません。デフォルトでは、SIGTERM シグナルが送られます。
次の例は、pgrep コマンドを使用して、指定したプロセス dtmail の所有者がユーザー kryten と一致することを確認し、次に pkill コマンドでそのプロセスを終了させます。
$ pgrep -u kryten -x dtmail 14206 $ pkill -u kryten -x dtmail $
スーパーユーザーとして pkill コマンドを実行する場合、-u オプションを指定すると、他のユーザーが所有するプロセス dtmailを誤って終了させてしまうことを防止できます。
次の例は、最も後で作成されたユーザー pmorph のプロセス shelltool を終了させます。
% pkill -u pmorph -n shelltool
次の例は、proc(1) ツールの 1 つである pwdx コマンドを pgrep コマンドへの入力として使用して、ユーザー rimmer の Korn シェルの現在の作業ディレクトリを表示します。
$ pgrep -u rimmer -x ksh | xargs /usr/proc/bin/pwdx 4748: /home/rimmer 11395: /home/rimmer/src/command 6010: /datab/files/file1
詳細は、pgrep(1) のマニュアルページを参照してください。