Linuxコマンド kill
プロセスおよびジョブを強制終了する
終了の方法はシグナルによって決まる。
例
kill -9 1234 # プロセスID1234番を強制終了
というわけでシグナルについて!
シグナル
プロセス間で連絡を取り合うための仕組み
プログラム自身の動作によって発生する同期シグナル、外的な要因で発生する非同期シグナルの2種類が存在する。
シグナル発生タイミング
- ユーザがキーボードで、割り込みキーを入力
- killコマンドを実行
- 参照出来ないメモリを参照
- 不正な演算を実施
- 明示的にシグナルを送信する処理を実行
シグナルを受け取ったプロセスは?
特に指定しなければデフォルトの応答が動作する
シグナルハンドラ
プロセスは特定のシグナルを受け取った場合に呼び出す関数を用意できる
プロセスは、SIGKILL/SIGSTOP 以外のすべてのシグナルを無視するよう設定できる
SIGUSR1 と SIGUSR2 は自由に使える
シグナル一覧
下記のコマンドで確認できる
kill -l
一部抜粋一覧
番号 | シグナル | 意味 | デフォルト通知内容 |
---|---|---|---|
1 | SIGHUP | クローズされた端末上で動いていたプロセスに送られる | 再起動 |
2 | SIGINT | キーボードからの割り込み、Ctrl+Cが押された | 割り込み |
3 | SIGQUIT | キーボードからの割り込み、Ctrl+\が押された | 終了+コアダンプ |
8 | SIGFPE | 浮動小数点演算のエラーおよび整数の0による割算の検出 | 終了+コアダンプ |
9 | SIGKILL | プロセスを強制終了する | 強制終了 |
11 | SIGSEGV | メモリアクセスについて違反があった | 終了+コアダンプ |
14 | SIGALRM | アラームタイマーの時間満了、もしくはalarm(2)からのタイマーシグナル | 終了 |
15 | SIGTERM | ソフトウェア終了シグナル | 終了 |
17 | SIGCHLD | 子プロセスが終了したとき親プロセスに送られる | 無視 |
18 | SIGCONT | バックグラウンドに回ったプロセスを再開する | 再開 |
19 | SIGSTOP | 実行を一時停止。SIGCONTシグナルによって再開 | 中断 |
20 | SIGTSTP | キーボードからの割り込み、Ctrl+Zが押された。 | サスペンド |
コアダンプ
ディスク上に生成される終了時のプロセスのメモリイメージ
プロセス管理まわりを続けて書く!