非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

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が押された。 サスペンド

コアダンプ

ディスク上に生成される終了時のプロセスのメモリイメージ



プロセス管理まわりを続けて書く!