= Kill 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Kill 組込みコマンド

dfn:[Kill 組込みコマンド]はプロセスにシグナルを送ります。

[[syntax]]
== 構文

- +kill [-{{シグナル}}|-s {{シグナル}}|-n {{シグナル}}] {{プロセス}}...+
- +kill -l [-v] [{{シグナル}}...]+

Kill コマンドでは、link:posix.html[POSIX 準拠モード]であるかどうかにかかわらずオプションはオペランドより先に全て指定しなければなりません。最初のオペランドより後にあるコマンドライン引数は全てオペランドとして解釈します。

[[description]]
== 説明

+-l+ オプションを付けずに実行すると、kill コマンドは指定した{{プロセス}}にシグナルを送信します。送信するシグナルの種類は{{シグナル指定オプション}}で指定します。シグナルの種類を指定しない場合は SIGTERM シグナルを送信します。

+-l+ オプションを付けて実行すると、kill コマンドは指定した{{シグナル}}に関する情報を標準出力に出力します。{{シグナル}}を指定しない場合は全てのシグナルに関する情報を表示します。

[[options]]
== オプション

=== シグナル指定オプション

+-{{シグナル}}+::
+-s {{シグナル}}+::
+-n {{シグナル}}+::
送信するシグナルを指定します。{{シグナル}}にはシグナル番号とシグナル名のどちらかを指定します。シグナル番号として 0 を指定すると、シグナルを送ることができるかどうかの判定だけを行い、実際にはシグナルを送信しません。シグナルを名前で指定する際は、大文字と小文字の区別はありません。

シグナル指定オプションは一度に一つまでしか使えません。

=== 他のオプション

+-l+::
シグナルに関する情報を表示します。

+-v+::
シグナルに関する情報をより詳しく表示します。+-v+ オプションを指定していない場合は単にシグナル名を出力しますが、指定している場合はシグナル番号・シグナル名・シグナルの簡単な説明を出力します。
+
このオプションを指定したときは同時に +-l+ も指定してあるとみなします。

[[operands]]
== オペランド

{{プロセス}}::
シグナルを送信するプロセスをプロセス ID・プロセスグループ ID・link:job.html#jobid[ジョブ ID] のいずれかで指定します。プロセスグループ ID を指定するときは、先頭に負号 (+-+) を付けます。プロセスとして +0+ を指定すると、シェルプロセスが属するプロセスグループを指定したものとみなします。プロセスとして +-1+ を指定すると、全てのプロセスにシグナルを送信します。

{{シグナル}}::
情報を表示するシグナルの名前または番号です。シグナルによって中断したコマンドの終了ステータスを指定することもできます。

[[exitstatus]]
== 終了ステータス

エラーがない限り kill コマンドの終了ステータスは 0 です。一つ以上のプロセスにシグナルを送ることができた場合、他にシグナルを送れなかったプロセスがあったとしても終了ステータスは 0 になります。

[[notes]]
== 補足

Kill コマンドはlink:builtin.html#types[準特殊組込みコマンド]です。

負数に見えるコマンドライン引数の扱いには注意が必要です。例えば +kill -1 -2+ では +-1+ がシグナル指定オプション、+-2+ がオペランドとなるので、番号 1 のシグナルをプロセスグループ 2 に送信します。+kill -- -1 -2+ や +kill -TERM -1 -2+ では +-1+ と +-2+ はどちらもオペランドになります。

POSIX には +-v+ および +-n+ オプションに関する規定はありません。よってこれらのオプションは link:posix.html[POSIX 準拠モード]では使えません。また POSIX は +-s+ オプションの引数としてシグナル番号を指定することを認めていません。POSIX は{{シグナル}}のオペランドとしてシグナルの名前を指定することを認めていません。

POSIX は、シグナル名は +INT+ や +QUIT+ のように最初の SIG を除いた形で指定しなければならないと規定しています。非 link:posix.html[POSIX 準拠モード]の yash では、拡張として SIG を付けた形でも指定できます。

// vim: set filetype=asciidoc expandtab:
