はじめに
こんにちは!今回はkillコマンドについて解説します。
killはプロセスを終了するコマンドですね。
暴走プログラムの強制停止、不要なプロセスの削除、サービスの再起動など、サーバー運用では欠かせません。ただし強制終了は危険なので、段階的な終了方法を理解することが大切です。
killコマンドとは
killは、指定したプロセスを終了するコマンドです。
実際には「プロセスを終了する」というより「プロセスにシグナルを送る」ことで、どのように終了するかを制御できます。段階的な終了(TERM→KILL)で、データ保存やクリーンアップの機会を与えられます。
主な用途:
- 暴走プロセスの停止
- サービスの再起動
- バックグラウンドプロセスの管理
基本構文
|
|
シグナルを省略するとTERM(終了)が送られます。
主なシグナル
| シグナル | 説明 |
|---|---|
-15 (TERM) |
終了要求(クリーンシャットダウン可能、デフォルト) |
-9 (KILL) |
強制終了(無条件に終了) |
-1 (HUP) |
ハングアップ(設定ファイル再読込) |
-2 (INT) |
割り込み(Ctrl+Cと同じ) |
-3 (QUIT) |
終了(コアダンプ作成) |
-19 (STOP) |
一時停止 |
-18 (CONT) |
再開 |
使用例
例1: 基本的なプロセス終了(推奨)
|
|
実行結果:
|
|
プロセスID 3456にTERM シグナルを送ります。プロセスが正常に終了を準備できます。
例2: プロセスを検索して終了
|
|
実行結果:
|
|
grepで検索したプロセスを自動取得して終了します。複数プロセス終了に便利です。
例3: 強制終了(KILLシグナル)
|
|
実行結果:
|
|
プロセスを強制終了します。プロセスが応答しない場合の最終手段です。
例4: ハングアップシグナル(設定再読込)
|
|
実行結果:
|
|
-1 (HUP)シグナルで設定ファイルの再読込を指示します。サービス再起動より軽いです。
例5: 複数プロセスを一括終了
|
|
実行結果:
|
|
killallコマンドでプロセス名指定で一括終了できます。
例6: プロセスを一時停止
|
|
実行結果:
|
|
-19 (STOP)シグナルで処理を一時停止します。再開は-18 (CONT)で可能です。
例7: 一時停止したプロセスを再開
|
|
実行結果:
|
|
-18 (CONT)シグナルで一時停止していたプロセスを再開します。
例8: ユーザーのすべてのプロセスを終了
|
|
実行結果:
|
|
特定ユーザーが実行中のすべてのプロセスを終了します。
例9: シグナルを強化して終了(段階的)
|
|
実行結果:
|
|
まずTERMで終了を要求し、応答なければKILLで強制終了します。推奨手法です。
例10: Webサーバーのグレースフルリスタート
|
|
実行結果:
|
|
.pidファイルからプロセスIDを取得して再起動します。サービス管理で一般的です。
Tips・注意点
TERMとKILLの使い分け
|
|
最初からKILLを使うと、プロセスがデータを保存できず、ファイルが破損することがあります。
killコマンドのエラーメッセージ
|
|
存在しないプロセスや権限がない場合はエラーが表示されます。
killallとpkill、pkillの違い
|
|
用途に応じて使い分けます。
実践的な使い方
暴走プロセスの停止
|
|
標準的なトラブル対応手順です。
Webサーバーの設定再読込
|
|
サービス再起動をより軽い設定再読込で実現します。
バッチジョブの管理
|
|
スクリプト内でプロセス管理できます。
ゾンビプロセスの親プロセスを終了
|
|
ゾンビプロセスは親プロセスを終了しることで解消されます。
まとめ
killコマンドのポイント:
- 通常終了(推奨):
kill PID(-15 TERM) - 強制終了:
kill -9 PID(最終手段) - 設定再読込:
kill -1 PID(-1 HUP) - 複数プロセス:
killall processname - 段階的終了:まずTERM、次にKILL
- root権限:他ユーザーのプロセスはsudoが必要
- 推奨手法:TERM→KILL→確認の段階的手法
プロセス管理の重要なコマンドです。常に段階的終了を心がけることで、データ損失やシステム問題を防げますよ!