【キル】

kill とは?

💡 暴走プロセスを止める緊急ブレーキ、シグナルで指示を伝える司令官
📌 このページのポイント
kill — プロセスにシグナルを送信 ユーザー kill PID SIGTERM SIGKILL -9 プロセスA 後片付けして終了 プロセスB 即座に強制終了 正しい手順 1. kill PID (まず穏やかに) 2. kill -9 PID (ダメなら強制) 主なシグナル SIGTERM (15) 終了をお願い SIGKILL (9) 問答無用で終了 SIGHUP (1) 設定の再読み込み SIGSTOP (19) 一時停止 killall / pkill = プロセス名でまとめてシグナル送信
killのイメージ
ひよこ ひよこ

killって名前が怖いんだけど、何をするコマンドなの?

ペンギン先生 ペンギン先生

名前は物騒だけど、やっていることは「プロセスにお手紙(シグナル)を送る」だけだよ。一番多い使い方は「もう終わってね」というお手紙を送ることだから「kill」という名前になったんだ

ひよこ ひよこ

どうやって使うの?

ペンギン先生 ペンギン先生

まず `ps aux | grep プロセス名` でプロセスID(PID)を調べて、`kill PID` で終了を要求するよ。これで終了しない場合は `kill -9 PID` で強制終了。`-9` はSIGKILLというシグナルで、プロセスに拒否権がないから確実に止まるんだ

ひよこ ひよこ

-9 以外にもシグナルがあるの?

ペンギン先生 ペンギン先生

たくさんあるよ!よく使うのは、SIGTERM(15)がお行儀よく終了してね、SIGKILL(9)が問答無用で終了、SIGHUP(1)が設定を再読み込みしてね、SIGSTOP(19)が一時停止してね、という感じ。`kill -l` で全シグナルの一覧を見られるよ

ひよこ ひよこ

kill -9 をいきなり使っちゃダメなの?

ペンギン先生 ペンギン先生

いきなり `-9` はなるべく避けた方がいいんだ。SIGTERMならプロセスが後片付け(ファイルを保存する、一時ファイルを消す等)をしてから終了できるけど、SIGKILLだとその暇もなく即座に消されるからデータが壊れることがあるよ。まず `kill PID` を試して、ダメなら `-9` という順番がお作法だね

ひよこ ひよこ

killallとかpkillっていうのもあるって聞いたけど、何が違うの?

ペンギン先生 ペンギン先生

killはPID(番号)を指定するけど、killallやpkillはプロセス名で指定できるんだ。`killall nginx` でnginxという名前の全プロセスを終了できるよ。pkillは正規表現も使えてさらに柔軟。ちなみにSIGKILLを受け取っても終了しないプロセスが稀にあって、それはカーネル空間で動いている処理(D状態のプロセス)で、これはOSの再起動でしか止められないんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「kill」って出てきたら「プロセスシグナルを送って終了させるコマンド」と思えればだいたいOK!
📖 おまけ:英語の意味
「kill」 = 終了させる
💬 英語で「殺す」という物騒な名前だけど、実際には「シグナルを送る」コマンドなんだよ。終了シグナルが一番よく使われるからこの名前になったんだ
← 用語集にもどる