kill 1234 と kill -9 1234 の違いは?
正答
- kill はプロセスを一時停止させ、-9 は完全に終了させる
- kill は対象のプロセスだけを、-9 は子プロセスもまとめて終了させる
- kill は SIGTERM で終了を依頼し、-9 は SIGKILL で強制終了する
- どちらも同じ SIGTERM で、-9 は 9 秒待ってから終了させる
解説
kill はプロセスにシグナルを送るコマンドで、番号を省くと SIGTERM(15)が送られる。SIGTERM はプロセス側で受け取って、ファイルを閉じるなどの後始末をしてから終了できる。SIGKILL(9)はカーネルが直接プロセスを止めるため捕捉も無視もできず、即座に消えるが後始末は行われない。まず kill で終了を依頼し、応答しないときだけ -9 を使うのが安全な順序である。一時停止は SIGSTOP で別のシグナルである。
参考: man7.org
この問題を含む Linux・シェル のテストを制限時間つきで解く
Linux・シェルクイズへ