ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- プロセスの終了またはシグナル送出
/usr/bin/kill -s signal_name pid...
/usr/bin/kill -l [exit_status]
/usr/bin/kill [-signal_name] pid...
/usr/bin/kill [-signal_number] pid...
kill ユーティリティーは、各 pid オペランドによって指定されたプロセス (1 つまたは複数) にシグナルを送信します。
pid オペランドのそれぞれについて、kill ユーティリティーは次の引数で呼び出された kill(2) 関数と等価のアクションを実行します。
pid オペランドの値は、pid 引数として使用されます。
sig 引数は、-s オプション、-signal_name オプション、または -signal_number オプションで指定された値です。あるいは、これらのオプションが何も指定されていない場合は、SIGTERM で指定された値です。
シグナルが送信されるプロセスは、ユーザーがスーパーユーザーでないかぎり現在のユーザーに属していなければなりません。
kill のシェル組み込みバージョンの説明については、「注意事項」を参照してください。
次のオプションがサポートされています。
(小文字のエル)オペランドが指定されていない場合、該当するシステムでサポートされている signal_name のすべての値を書き出します。exit_status オペランドが指定され、それがシェル特殊パラメータ値 ? およびシグナルが終了したプロセスに対応する wait の場合は、そのプロセスを終了するシグナルに対応する signal_name が書き込まれます。exit_status オペランドが指定され、それがシグナル番号を示す符号なしの 10 進整数値なら、そのシグナルに対応する signal_name が書き込まれます。その他の場合、結果は不確定です。
<signal.h> に定義されている記号名の 1 つを使って、送信するシグナルを指定します。signal_name の値は、SIG 接頭辞なしで、大文字/小文字を区別しない方法で認識されます。さらに記号名 0 は、ゼロのシグナル値を表すものと認識されます。SIGTERM の代わりに、対応するシグナルが送信されます。
-s signal_name と同等です。
SIGTERM の代わりに使用するシグナルを表す、負でない 10 進整数 signal_number を指定します。kill(2) への有効な呼び出しにおける sig 引数と同じです。
次のオペランドがサポートされています。
次のうちのいずれかを指定します。
シグナルが送信されるプロセスまたはプロセスグループを指定する 10 進の整数。pid オペランドの正の値、負の値、またはゼロで選択されたプロセスは、kill 関数で説明されているものと同じです。プロセス番号 0 が指定されると、プロセスグループ内のすべてのプロセスにシグナルが送信されます。最初の pid オペランドに負の値を指定する場合、オプションとして解釈されないように、前に - - を付加しなければなりません。
シグナルが送信されるバックグラウンドプロセスグループを識別するジョブ制御のジョブ ID。ジョブ制御ジョブ ID 表記が適用できるのは、現在のシェル実行環境で kill を呼び出すときだけです。
pid のジョブ制御ジョブ ID タイプが使用できるのは、ジョブ制御オプションをサポートしているシステムだけです。
シグナル番号を指定する 10 進の整数または シグナルが終了したプロセスの終了ステータス。
プロセス番号は ps(1) を使って知ることができます。
kill が独自のユーティリティー実行環境で動作するときは、ジョブ制御ジョブ ID 表記は、前述のような働きをする必要はありません。次の 2 つの例を見てください。
example% nohup kill %1 & example% system( "kill %1");
いずれにおいても kill は異なる環境で動作し、各ジョブ番号については関連性はありません。
-l オプションが指定されなければ、標準出力は使用されません。
-l オプションが指定されると、各シグナルの記号名が次のフォーマットで書き込まれます。
"%s%c", <signal_name>, <separator>
この <signal_name> は、SIG 接頭辞を付けずに大文字で指定します。<separator> は復帰改行文字 (NEWLINE) またはスペース文字です。最後に書き込まれるシグナルの場合、<separator> は復帰改行文字になります。
-l オプションと exit_status オペランドの両方が指定されると、対応するシグナルの記号名が次のフォーマットで書き込まれます。
"%s\n", <signal_name>
例 1 強制終了シグナルを送信する
次のコマンドを見てください。
example% kill -9 100 -165 example% kill -s kill 100 -165 example% kill -s KILL 100 -165
送信側プロセスが指定されたプロセスへのシグナル送信を許可されていて、指定されたプロセスが存在するという条件で、いずれのコマンドも 100 という ID を持つプロセスと、165 というプロセスグループ ID を持つすべてのプロセスに SIGKILL シグナルを送信します。
例 2 最初の負の引数のあいまいさを避ける
シグナル番号またはプロセスグループを指定する最初の負の引数のあいまいさを避けるため、最初の負の数はいつもシグナルとします。そのため、プロセスグループ (たとえば 123) にデフォルトシグナルを送信する場合、アプリケーションは次のようなコマンドを使用しなければなりません。
example% kill -TERM -123 example% kill -- -123
kill の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、および NLSPATH。
次の終了値が返されます。
各 pid オペランドに対して一致するプロセスが 1 つ以上見つかり、さらに 1 つ以上のプロセスに対して指定されたシグナルが処理されました。
エラーが発生しました。
属性についての詳細は、attributes(5) を参照してください。
|
|
csh(1), getconf(1), jobs(1), ksh(1), ksh88(1), ps(1), sh(1), shell_builtins(1), wait(1), kill(2), signal(3C), signal.h(3HEAD), attributes(5), environ(5), standards(5)
サポートされるリアルタイムシグナルの数は、getconf(1) の値 _POSIX_RTSIG_MAX によって定義されます。
sh には kill コマンドに、jobid でプロセスを識別する機能を追加した、組み込みコマンドが用意されています。sh の構文を次に示します。
kill [ -sig ] [ pid ] [ %job ]... kill -l
C シェルと csh にも kill の組み込みコマンドが用意されています。構文は次のとおりです。
kill [-sig][pid][%job]... kill -l
csh における kill の組み込みコマンドは TERM (終了) シグナル (デフォルトの場合) または指定されたシグナルを、指定されたプロセス ID、指定されたジョブ、または現在のジョブへ送信します。シグナルは番号または名前で指定します。シグナルを送るプロセスまたはジョブにデフォルトはありません。そのため、kill だけを入力しても現在のジョブにはシグナルを送信しません。送信中のシグナルが TERM (終了) または HUP (ハングアップ) の場合、そのジョブまたはプロセスには CONT (継続) シグナルも送られます。
送信可能なシグナル名の一覧を表示します。
ksh88 における kill の構文は次のとおりです。
kill [-sig][pid][%job]... kill -l
ksh88 における kill は、TERM (終了) シグナルまたは指定されたシグナルのいずれかを、指定されたジョブまたはプロセスに送信します。シグナルは、番号または名前 (signal.h(3HEAD) に示される。ただし “SIG” という接頭辞を取り除いたもの) で指定します。送信するシグナルが TERM (終了) または HUP (ハングアップ) の場合、停止中のジョブまたはプロセスには CONT (継続) シグナルを送信します。job という引数は、活動中のジョブではないプロセスのプロセス ID を指定することもできます。第 2 の形式の kill -l は、シグナル番号とシグナル名をリスト表示します。
ksh における kill の構文は次のとおりです。
kill [-n signum] [-s signame] job ... kill [-n signum] [-s signame] -l [arg ...]
-l が指定されていない最初の形式では、kill は、job で指定された 1 つ以上のプロセスにシグナルを送信します。この場合、シグナルが捕捉または無視されていないかぎり、通常、プロセスは終了します。
job には次のいずれかを指定します。
job のプロセス ID。
job のプロセスグループ ID。
ジョブ番号。
名前が string で始まるジョブ。
名前に string が含まれるジョブ。
現在のジョブ。
前のジョブ。
-n オプションまたは -s オプションを使用してシグナルが指定されていない場合、SIGTERM シグナルが使用されます。
-l が指定されて、arg が指定されない場合、kill は、シグナルのリストを標準出力に書き込みます。それ以外の場合、arg には、シグナル名か、シグナル番号またはシグナルによって終了されたプロセスの終了ステータスを表す数値を指定できます。名前を指定した場合、対応するシグナル番号が標準出力に書き込まれます。数値を指定した場合、対応するシグナル名が標準出力に書き込まれます。
前述のとおり、シグナルを送信するのではなく、シグナル名またはシグナル番号を一覧表示します。-n オプションおよび -s オプションは指定できません。
送信するシグナルの番号を指定します。次の場合を除き、シグナル番号はプラットフォーム間の可搬性はありません。
シグナルなし。
HUP
INT
QUIT
ABRT
KILL
ALRM
TERM
送信するシグナルの名前を指定します。シグナル名は、<signal.h> で定義されている名前から接頭辞 SIG を取り除いたもので、大文字と小文字は区別されません。kill -l は、現在のプラットフォーム上のシグナルのリストを生成します。
ksh における kill は、終了時に次のいずれかの値を返します。
各 job オペランドに対して一致するプロセスが 1 つ以上見つかり、さらに 1 つ以上の一致するプロセスに対して指定されたシグナルが正常に送信されました。
エラーが発生しました。