LPIC-1 Exam 101 無料問題 7 / 10 ・ 分野3: GNU and Unix Commands
PID 2210 のプロセスに、シグナルを指定せずに kill 2210 を実行した。これと同じシグナルを送るコマンドはどれか。
- kill -9 2210
- kill -2 2210
- kill -15 2210
- kill -1 2210
正解と解説を見る
正解: C
正解の理由
procps の kill(1) は DESCRIPTION の冒頭で、kill の既定のシグナルは TERM だと書いている。signal(7) の番号の表では SIGTERM は 15 で、この番号はアーキテクチャーによらず同じ。したがって kill 2210 は kill -15 2210(kill -TERM 2210・kill -s TERM 2210 とも書ける)と同じシグナルを送る。SIGTERM は「終了してほしい」という依頼で、プロセスはこれを捕まえて一時ファイルの削除などの後始末をしてから終われる。
違う選択肢
「kill -9 2210」… 番号 9 は SIGKILL で、kill という名前から既定で強制終了を送ると考えている。SIGKILL は後片付けの機会を与えずに終わらせるので、既定にすると毎回その乱暴な止め方になる。
「kill -1 2210」… 番号 1 は SIGHUP で、制御端末の切断を知らせるシグナル。既定の動作は終了だが、多くのデーモンは設定の読み直しの合図として使う。kill の既定ではない。
「kill -2 2210」… 番号 2 は SIGINT で、キーボードからの割り込みを表す。端末で動くプログラムを止めるときに送られるもので、kill が引数なしで送るものではない。
押さえどころ
止めるときは、まず既定の TERM を送って様子を見て、それでも終わらないときに -9(KILL)を使う、という順が基本になる。シグナルの名前と番号の対応は kill -l で確かめられ、kill -l 15 のように番号を渡すと名前に変えて表示する。1(HUP)・2(INT)・9(KILL)・15(TERM)は番号で出題されやすい。