> Linux Reviews > man >

kill


  1. kill.1.man
  2. kill.2.man


1. kill.1.man

Manpage of KILL

KILL

Section: Linux User's Manual (1)
Updated: November 21, 1999
Index Return to Main Contents
 

名前

kill - プロセスにシグナルを送る

 

書式

kill pid ...リストされた全てのプロセスに SIGTERM を送る
kill -signal pid ...リストされた全てのプロセスにシグナルを送る
kill -s signal pid ...リストされた全てのプロセスにシグナルを送る
kill -l全てのシグナルの名前をリストする
kill -L 全てのシグナルの名前を見栄えの良い表形式でリストする
kill -l signalシグナルの番号と名前を変換する
kill -V,--versionプログラムのパージョンを表示する

 

説明

kill のデフォルトのシグナルは TERM である。 -l や -L を用いると、指定できるシグナルをリストできる。 特に便利なシグナルには HUP, INT, KILL, STOP, CONT, 0 などがある。 デフォルト以外のシグナルの指定方法は 3 つある。 -9 -SIGKILL -KILL。 負の PID の値はプロセスグループ全体を選択するのに使われる。 ps コマンドの出力の PGID カラムを参照すること。 -1 という PID は特別である。 これは kill プロセス自身と init 以外の全てのプロセスを表す。

 

シグナル

以下に kill で使えるシグナルのリストを示す。 わかるものについては、定数・番号とデフォルトの動作も示す。

名前番号アクション説明
00n/aシグナルを送った場合の終了コードを取得する
ALRM14exit
HUP1exit
INT2exit
KILL9exitこのシグナルはブロックされない
PIPE13exit
POLLexit
PROFexit
TERM15exit
USR1exit
USR2exit
VTALRMexit
STKFLTexit実装されていないかもしれない
PWRignore システムによっては終了 (exit) するかもしれない
WINCHignore
CHLDignore
URGignore
TSTPstopシェルと相互作用するかもしれない
TTINstopシェルと相互作用するかもしれない
TTOUstopシェルと相互作用するかもしれない
STOPstopこのシグナルはブロックされない
CONTrestart停止 (stop) 状態なら再開、その他なら無視
ABRT6core
FPE8core
ILL4core
QUIT3core
SEGV11core
TRAP5core
SYScore実装されていないかもしれない
EMTcore実装されていないかもしれない
BUScoreコアダンプは失敗するかもしれない
XCPUcoreコアダンプは失敗するかもしれない
XFSZcoreコアダンプは失敗するかもしれない

 

注意

あなたの使っているシェル (コマンドラインインタープリター) には組み込みの kill コマンドがあるかもしれない。 この場合、ここで説明した kill を実行するには、 /bin/kill のように指定する必要があるかもしれない。

 

 

kill -9 -1

kill 可能な全てのプロセスを kill する。

 

kill -l 11

数値 11 をシグナル名に変換する。

 

kill -L

使用可能なシグナルを見栄えの良い表形式でリストする。

 

kill 123 543 2341 3453

デフォルトのシグナル SIGTERM をこれら全てのプロセスに送る。

 

関連項目

pkill(1), skill(1), kill(2), renice(1), nice(1), signal(7), killall(1)

 

標準

このコマンドは適切な標準に準拠している。 -L フラグは Linux 固有のものである。

 

著者

Albert Cahalan <acahalan@cs.uml.edu> が 1999 年に 標準に合致していない bsdutils のものを置き換えるために kill を書いた。 util-linux の kill も正しく動作するだろう。

バグ報告は <procps-feedback@lists.sf.net> まで送って欲しい。


 

Index

名前
書式
説明
シグナル
注意
kill -9 -1
kill -l 11
kill -L
kill 123 543 2341 3453
関連項目
標準
著者

This document was created by man2html using the manual pages.
Time: 17:38:34 GMT, October 23, 2013

2. kill.2.man

Manpage of KILL

KILL

Section: Linux Programmer's Manual (2)
Updated: 2009-09-15
Index Return to Main Contents
 

名前

kill - プロセスにシグナルを送る  

書式

#include <sys/types.h>

#include <signal.h> int kill(pid_t pid, int sig);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

kill(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE  

説明

システムコールの kill() は、任意のプロセス・グループもしくはプロセスにシグナルを 送るのに使われる。

pid に正の値を指定した場合、シグナル sigpid で指定された ID を持つプロセスに送られる。

pid に 0 を指定した場合、 呼び出し元のプロセスのプロセス・グループに属するすべてのプロセスに sig で指定したシグナルが送られる。

pid に -1 を指定した場合、 sig で指定したシグナルが、 呼び出し元のプロセスがシグナルを送る許可を持つ全てのプロセスに 送られる。但し、プロセス番号 1 (init) へはシグナルは送られない。 以下の関連部分も参照のこと。

pid に -1 より小さな値を指定した場合、 ID が -pid のプロセス・グループに属するすべてのプロセスに sig で指定したシグナルが送られる。

sig に 0 を指定した場合、シグナルは送られないが、 エラーのチェックは行われる。これを使って、プロセス ID や プロセスグループ ID の存在確認を行うことができる。

あるプロセスがシグナルを送る許可を持つには、 そのプロセスが特権 (Linux では CAP_KILL ケーパビリティ) を持つプロセスであるか、シグナルを送る側のプロセスの 実UID か実効UID が受ける側のプロセスの実 set-UID か 保存 (saved) set-UID が一致していなければならない。 SIGCONT の場合は、シグナルを送信するプロセスと受信するプロセスが 同じセッションに所属していれば十分である。  

返り値

成功した場合 (少なくとも一つのシグナルが送信された場合)、 0 が返される。エラーの場合 -1 が返され、 errno が適切に設定される。  

エラー

EINVAL
無効なシグナルを指定した。
EPERM
プロセスが、受信するプロセスのいずれに対しても シグナルを送る許可を持っていない。
ESRCH
指定したプロセスまたはプロセス・グループが存在しなかった。 ゾンビプロセスは存在するプロセスとしてみなされる。 ゾンビプロセスとはすでに処理は終了しているが、親プロセスによる wait() 処理が行われていないプロセスのことである。
 

準拠

SVr4, 4.3BSD, POSIX.1-2001.  

注意

プロセス番号 1 の init プロセスに送ることができるシグナルは、 init が明示的にシグナルハンドラを設定したシグナルだけである。 こうなっているのは、誤ってシステムをダウンさせないようにするためである。

POSIX.1-2001 では、 kill(-1,sig) が 呼び出し元のプロセスがシグナルを送ることが出来るプロセス全てに sig を送ることを要求している。 但し、システム実装時に定められたシステムプロセスは シグナルの送信対象から除外される。 Linux では、プロセスが自分自身にシグナルを送れるようになっているが、 Linux の kill(-1,sig) は呼び出し元のプロセスにはシグナルを送らない。

POSIX.1-2001 では以下の動作になることを要求している。 自分自身にシグナルを送ると、シグナルを送ったスレッドがそのシグナルをブロック しておらず、他のどのスレッドもそのシグナルを受ける状態にもなく sigwait(3) でそのシグナルを待ってもいない場合、 kill() が返る前に少なくとも一つのブロックされていない シグナルがシグナルを送ったスレッドに配送されなければならない。  

Linux での注意

Linux では、特権のないプロセスが他のプロセスにシグナルを送信するために 必要な権限についてのルールが、カーネルバージョンにより違っている。 カーネル 1.0 から 1.2.2 では、送信側の実効ユーザーID が受信側の 実効ユーザー IDと一致すればシグナルを送信できた。 カーネル 1.2.3 から 1.3.77では、送信側の実効ユーザーID が受信側の 実ユーザーID か実効ユーザーID のいずれかと一致すればシグナルを送信できた。 現在のルールは、POSIX.1-2001 に準拠しており、カーネル 1.3.78 以降で 適用されている。  

バグ

バージョン 2.6.7 以前の 2.6 系のカーネルには、 プロセスグループにシグナルを送ったときに、 呼び出し元のプロセスがプロセスグループの (全メンバーではなく) 一部のメンバー に対してのみシグナルを送る許可を持っている場合に、 kill() がエラー EPERM で失敗するというバグがある。 このエラーが返るにもかかわらず、そのシグナルは呼び出し元が シグナルを送る許可を持つ全てのプロセスへ送られる。  

関連項目

_exit(2), killpg(2), signal(2), sigqueue(2), tkill(2), exit(3), credentials(7), capabilities(7), signal(7)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
Linux での注意
バグ
関連項目

This document was created by man2html using the manual pages.
Time: 17:38:34 GMT, October 23, 2013

SVENSKA - SVENSKA - SVENSKA - SVENSKA - nl - pl - SVENSKA