kill - |
プロセスにシグナルを送信又は、プロセスを強制終了 |
構文 |
|
kill [-s signal] pid ... kill -l [signal]
|
|
オプション
-signal_num |
シグナルの番号。 |
-l [signal] |
シグナルの一覧を表示。 |
-s signal |
送信するシグナルを指定。 |
pid |
強制終了先又は送信先のプロセスID。 |
説明 |
|
プロセスを強制終了させたり、プロセスにシグナルを送信したりする。 「9:SIGKILL」をプロセスに送信した場合、そのプロセスは強制終了させられる。 色々なシグナルがあるが、以下に主なものを示す。
|
|
主なシグナル
(引数のsignalは下記のシグナル番号又はSIG...のシンボルの何れかを指定する) |
1 : SIGHUP - 端末を閉じしたときにその端末から起動されたプロセスに送られるもの。 |
2 : SIGINT - 端末から「CTRL + C」を押下したときに発生するもの。 |
3 : SIGQUIT - 端末の終了キー「CTRL + \」で発生するもの。 |
4 : SIGILL - 不正な命令により発生するもの。 |
9 : SIGKILL - Killシグナルによるプロセス強制終了。 |
15 : SIGTERM - killコマンドがデフォルトで送信。受信したプロセスはキャッチや無視する事ができる。 |
確認用としてRubyスクリプトで、シグナルを受信してみる。
$ cat signal_rcv.rb
Signal.trap(:HUP){puts "SIGHUPを受信"}
Signal.trap(:INT){puts "SIGINTを受信"}
Signal.trap(:QUIT){puts "SIGQUITを受信"}
Signal.trap(:KILL){puts "SIGKILLを受信"}
Signal.trap(:TERM){puts "SIGTERMを受信"}
puts "実行プロセスIDは[#{Process.pid}]です。"
sleep 100000
$
Rubyスクリプトを実行する。
$ ruby signal_rcv.rb &
[1] 3511
$ 実行プロセスIDは[3511]です。
現在のプロセスの状態
$ ps
PID TTY TIME CMD
2957 pts/0 00:00:01 bash
3511 pts/0 00:00:00 ruby
3512 pts/0 00:00:00 ps
SIGTERMをRubyプロセスに送信する。(killコマンドがデフォルトで送信)
$ kill 3511
SIGTERMを受信
SIGTERMをRubyプロセスに送信する。
$ kill -s SIGTERM 3511
SIGTERMを受信
SIGTERMをRubyプロセスに送信する。
$ kill -15 3511
SIGTERMを受信
SIGHUPをRubyプロセスに送信する。
$ kill -1 3511
SIGHUPを受信
SIGINTをRubyプロセスに送信する。
$ kill -2 3511
SIGINTを受信
Rubyプロセスに「強制終了」を送信する。(Rubyプロセスは強制終了させられる)
$ kill -s SIGKILL 3511
[1]+ 強制終了 ruby signal_rcv.rb
Rubyプロセスは強制終了させられたので存在しない。
$ ps
PID TTY TIME CMD
2957 pts/0 00:00:01 bash
3513 pts/0 00:00:00 ps
$
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
$ kill -l SIGQUIT
3
$ kill -l 3
QUIT