プロセスの終了


Linuxサーバー管理者の技術を2日で学べる「初心者向けリナックスセミナー」
30日掛かって覚えるプロの技術を、たった2日間で学習できます。
リナックスマスター2日間集中セミナー【CentOS7.1版】
 (今すぐ↑をクリックしてください。)

プロセスを終了するには、killコマンドを実行します。
killコマンドは、プロセスに対してシグナルというメッセージを送信します。
プロセスはシグナルを受け取ると、終了や再起動など、受け取ったシグナルに応じて処理を実行します。

シグナルには、シグナル名とシグナルID(番号)がつけられており、killコマンドで指定して実行します。

killコマンドで利用できるシグナルは、「kill -l」で参照出来ます。
------------------------------------------------------------------------------
$ 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
------------------------------------------------------------------------------

主に利用するシグナルを下記にまとめます。
-------------------------------------------------------------
シグナル名  シグナルID  動作
HUP      1       ハングアップ
INT      2       割り込み(Ctrl+cキー)
KILL     9       強制終了
TERM     15      終了(デフォルト)
CONT     18      停止しているプロセスを再開
STOP     19      一時停止
-------------------------------------------------------------
HUPシグナルは、デーモンプログラムの設定を変更した際に、設定ファイルを再読み込みする際に利用します。
INTシグナルは、割り込みによって動作を停止させます。
KILLシグナルは、プロセスを直ちに強制終了させます。
TERMシグナルは、プロセスを正常終了させます。
正常終了とは、開いているファイルがあるなら閉じるなどの適切な手順を実行して終了することを指します。

シグナルを指定しないで、killコマンドを実行した場合は、TERMシグナルがプロセスに送信されます。
PIDが1523のプロセスにTERMシグナルを送る場合、下記のように実行します。
-------------------------------------------------------------
$ kill 1523
-------------------------------------------------------------

また、下記のように記述しても同じになります。
-------------------------------------------------------------
$ kill -15 1523
$ kill -s 15 1523
$ kill -TERM 1523
$ kill -SIGTERM 1523
-------------------------------------------------------------

プログラムが異常動作を起こした場合などは、TERMシグナルで終了できない場合があります。
そのような時には、KILLシグナルを送信して強制終了します。
-------------------------------------------------------------
$ kill -KILL 1523
-------------------------------------------------------------
KILLシグナルで強制終了した場合、プロセスが開いていたファイルがそのまま開いたままになる事があります。
そのため、ファイルが壊れたりしてシステムに何らかの障害が発生する可能があるので、KILLシグナルを実行するのは、最終手段にすべきです。

一般的に、親プロセスを強制終了すると、その親プロセスから生成された子プロセスも終了します。

また、プロセスは複数並べて指定することも出来ます。
-------------------------------------------------------------
$ kill -KILL 1522 1523
-------------------------------------------------------------

killコマンドでは、PIDを指定する必要がありますが、
killallコマンドを使うと、プロセス名で指定することができます。
下記例では、vimプロセスにすべてに対して、TERMシグナルが送られます。
-------------------------------------------------------------
$ killall vim
-------------------------------------------------------------

下記のように記述して使用することもできます。
-------------------------------------------------------------
# killall httpd
# killall mysqld
-------------------------------------------------------------



■CentOS7.1サーバー構築マニュアルを無料プレゼント
 「CentOS7.1」のサーバー構築手順、「VMware Player」の
 ダウンロードとインストール手順をまとめたマニュアルを
 無料でプレゼントしています。


 詳しくは↓のページで説明していますので、今すぐクリックしてダウンロードしてください。
 無料マニュアルをダウンロードする  無料マニュアルをダウンロードする