kill -9 強制終了オプション つける意味

Linux
スポンサーリンク

Linuxのコマンドでプロセスを殺す「kill」コマンドがある。

よくkillコマンドで強制終了させるとき「-9」オプションをつけて実行する記事が書かれている。付ける意味在るんかと思ったので調べてみた。

僕は前も調べてたみたいだけど、忘れてた。

-9は強制終了オプション

オプション無しの

kill

で、プロセスを終了させることができるが、プロセスがフリーズする等でシグナルを受け付けてくれない状態に終了できない場合もある。

そのときに強制終了させるオプションとして、-9がある。

kill -9

-9 は、 -s 9 としてもいいらしい。(参考

kill -KILL 

でも同じ動作になる模様。

「kill」と「kill -9」との違いは、 kill が、プロセスに対して、後処理を含めて、きちんと終了しなさい、と、指示するのに対して、 kill -9 は、後処理も何も要らないから、直ちに終了しなさい、と、指示するものです。ですから、後者の方法では、処理中のファイル等の内容が失われる、等の不都合が起こる場合があります。

参考

 

実はプロセスを終了させるときや停止させる時に使う Ctrl + c  Ctrl + z も上記のシグナルを送信して処理しています。

〜中略〜

ちなみにこの9番のシグナルは少し特殊で、Linuxカーネルが直接処理をするという挙動をします。

参考

-9以外のオプション

「9」の数字は強制終了のシグナルを発するが、別の数字だと別のシグナルを発する。

全てのシグナルのリストを確認するには「-l」オプションを使う。

$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE
9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31) SIGUSR2

 

-9 は、「SIGKILL」。

 

killコマンド利用のガイドライン

上述の引用にもあったが、何でもかんでも-9で強制終了するのはよろしくない。

  1. kill(オプションなし)でプロセス終了実行
  2. ps コマンドなどでプロセスが死んだか確認
  3. 死んでないならkill -9 で強制終了させる

強制終了だと、プロセスが掴んでるファイルのデータが失われたりする可能性がある。自己責任でオナシャス。

 

 

コメント