🐧 Linux 総合学習プラットフォーム

いきなり kill -9 でプロセスを消して、データ破損と後始末が残ってしまった

症状(よく出るエラー)

固まったアプリを kill -9 で強制終了。再起動すると、書きかけのファイルが壊れている、ロックファイルが残って二重起動と誤認される、共有メモリやソケットのゴミが残る、といった後遺症が出る。

原因

kill -9(SIGKILL)はプロセスに捕捉も無視もできない即死シグナルで、カーネルがその場でプロセスを消す。通常の終了処理——バッファのフラッシュ、テンポラリやロックファイルの削除、子プロセスの回収——が一切走らないため、書き込み途中のデータやリソースが中途半端な状態で取り残される。多くのデーモンは SIGTERM を受けて安全に店じまいする設計なので、それを飛ばすのがそもそも損。

直し方

まず kill PID(既定の SIGTERM)を送り、数秒待って ps -p PID で生存確認する、を先に試す。それでも死なないときに限って kill -9 PID に切り替える段取りにする。事故後は残ったロックファイル(/var/run や /tmp の .pid・.lock)を確認して手で消し、アプリのデータ整合性チェック機能があれば走らせる。

▶ 学習アプリでしっかり学ぶ