【キル】

kill とは?

最終更新:
💡 プロセスへシグナルという「お手紙」を送るコマンド

LinuxなどのUnix系OSで、プロセスにシグナルを送るコマンド。終了要求のほか、一時停止や再開などにも使う。

📌 このページのポイント
kill:プロセスへシグナルを送る kill PID SIGTERM プロセス 終了を要求 処理は実装による kill -s KILL SIGKILL 強制終了 捕捉・無視できない 後片付けを呼べない 別途PIDを指定 送信には権限と対象PIDの確認が必要 停止・再開用のシグナルもある
LinuxなどのUnix系OSの例。SIGTERMで保存処理が走るかはアプリの実装による。SIGKILLの前に終了の必要性と未保存データを確認する。
ひよこ ひよこ
killって名前が怖いんだけど、何をするの?
ペンギン先生 ペンギン先生
Linuxなどで、プロセスにシグナルを送るコマンドだよ。「終了してね」「一時停止してね」といったお手紙を届けるイメージで、終了専用ではないんだ。
ひよこ ひよこ
終了を頼むにはどうするの?
ペンギン先生 ペンギン先生
psなどで対象のプロセスID(PID)を確かめて、kill PIDを使うと通常はSIGTERMを送るよ。送信には権限が必要だから、番号だけでなく対象もよく確認しよう。
ひよこ ひよこ
SIGTERMなら、保存してから終了してくれる?
ペンギン先生 ペンギン先生
アプリがSIGTERM用の処理を実装していれば、後片付けをして終了できるよ。既定の動作は終了だけれど、アプリによっては捕捉したり無視したりできるので、保存を保証するシグナルではないんだ。
ひよこ ひよこ
終了しなければSIGKILLを使うの?
ペンギン先生 ペンギン先生
強制終了が必要かを確認して使うよ。kill -s KILL PIDで送るSIGKILLは捕捉・無視できず、アプリの後片付け処理を呼べない。未保存の作業などを失うおそれがあるので、いきなり使うのは避けよう。
ひよこ ひよこ
一時停止や再開もシグナルでできる?
ペンギン先生 ペンギン先生
LinuxではSIGSTOPで停止し、SIGCONTで再開できるよ。シグナル番号は環境で異なるものがあるので、kill -s STOP PIDのように名前で指定すると意図が伝わりやすいね。kill -lで一覧も確認できるよ。
もっと詳しく知りたい人へ

SIGHUPを送ると、必ず設定を再読み込みする?

いいえ。LinuxでのSIGHUPの既定の動作はプロセスの終了です。設定再読み込みになるのは、対象アプリがそのような処理を実装している場合です。アプリの管理手順を確認してから使います。

シグナルを送れないときは何を確認する?

まずPIDが対象プロセスのものか、送信権限があるかを確認します。Linuxのkillシステムコールは権限不足をEPERM、対象が見つからない場合をESRCHとして報告します。既に終了して親の回収を待つゾンビは、実行中のプロセスとは状態が異なります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「kill」って出てきたら「プロセスにシグナルを送るコマンド」と思えばだいたいOK!
📖 おまけ:英語の意味
「kill」 = 殺す、終了させる
💬 名前から終了専用に見えるけれど、コマンドの役割はシグナルを送ることだよ。

参考資料

← 用語集にもどる