Linuxでプロセスを終了させたい時どうするか。
普通は、killコマンドを使って、プロセスおよびジョブを終了させる。
kill プロセスID
しかし、これではプロセスを終了させられない時がある。
こういう時は、シグナルも送ってあげると解決することが多い。終了の方法はシグナルによって決まる。
killの使い方
kill [オプション] [シグナル] [プロセスID]
- ※ シグナルとは、プロセスに対して送信するメッセージのようなもの。
- ※ シグナルはデフォルトで、TERM(15)(終了)が送信される。
通常は、TERMシグナルを受け取ったプロセスは終了する。
しかし、TERMシグナルでプロセスが終了しない場合がある。
そういう時は、シグナルKILL(15)(強制終了)を実行すると、大抵の場合プロセスを終了できる。
ただし、強制終了にした場合、障害を引き起こす可能性があるので、注意が必要。プロセスによってシグナルを使い分ける必要がある。
オプションの種類
オプション | 内容 |
-l | シグナルの一覧を出力する。 |
シグナルの種類
シグナルは、番号でも送れる。
シグナル | 内容 |
HUPまたは1 | プロセスを終了後、再起動する(Hangupの略) |
INTまたは2 | キーボードからの割り込みによるプロセスの終了(Interruptの略)。シェルでC-cするのと同じ。 |
QUITまたは3 | キーボードからのプロセスの中止(Quit) |
SIGILLまたは4 | 不正な命令(Illegal instruction)によるプロセスの中止 |
KILLまたは9 | 強制終了(killed) |
TERMまたは15 | 終了(Terminationの略)。デフォルトはこのシグナル。 |
利用例
ps ax
などで、プロセス一覧を表示させる。
終了させたいプロセス番号を探し、killコマンドを実行する。
プロセス操作系のコマンドについては、pgrep, pkill を使用してプロセスを殺す - 技術メモ帳が参考になる。
- プロセスを普通に終了させる
# プロセスID(PID)10000に終了のシグナルを送信する。以下は全て同じ動作。 $ kill 10000 $ kill -TERM 10000 $ kill -15 10000
- プロセスを一時停止させる
# プロセスID(PID)10000に強制終了のシグナルを送信する。以下は同じ動作。 $ kill -INT 10000 $ kill -2 10000
- プロセスを強制終了させる
# プロセスID(PID)10000に強制終了のシグナルを送信する。以下は同じ動作。 $ kill -KILL 10000 $ kill -9 10000
参考
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/07/27
- メディア: 単行本
- 購入: 35人 クリック: 450回
- この商品を含むブログ (150件) を見る
◆◆このブログのサイトマップへ◆◆