概要
プロセスへシグナルを送ります。単純な終了だけでなく、設定再読込、割り込み、存在確認などにも使える重要コマンドです。
基本構文
kill [-s シグナル | -n シグナル番号 | -シグナル名] PID...
kill -l [シグナル番号]詳細解説
killは、プロセスへシグナルを送るコマンドです。名前から必ず終了させる道具に見えますが、本質はシグナル送信であり、既定では穏やかな終了要求であるSIGTERMを送ります。
実務では、異常プロセスの停止だけでなく、設定再読み込みにHUPを送る、存在確認としてシグナル0を送るといった使い方もあります。
特に重要なのは、いきなりSIGKILLを使わないことです。まずTERMで終了機会を与え、どうしても止まらない時だけKILLを検討します。
このコマンドを使う場面
異常プロセスの停止、サービスの再読み込み要求、調査用の存在確認、ジョブ制御と組み合わせた対話操作に使います。
まず安全に試す方法
1. sleep 300 &
2. echo $!
3. kill -0 $!
4. kill $!
5. wait $! 2>/dev/null
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
自分で起動したsleepのPIDへkillを送り、穏やかに終了させます。
-
kill -lを実行し、代表的なシグナル名を覚えます。
資格試験との関連
-
LinuC レベル1
範囲: 1.01.4 プロセスの生成、監視、終了根拠: officialLinuCレベル1では、プロセスの確認、監視、終了の基礎が問われます。
-
LPIC-1
範囲: 103.5 Create, monitor and kill processes根拠: officialLPIC-1では、プロセスの確認、監視、終了の基礎が問われます。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、killはLinux運用の基礎体力を支える重要なコマンドです。
実行結果サンプル
-
sleep 300 & echo $! kill -0 $! && echo ok12345 ok -
sleep 300 & kill $! wait $! 2>/dev/null || echo terminatedterminated
戻り値コード
- 0 正常終了。シグナル送信または一覧表示に成功しました。
- >0 対象不存在、権限不足、不正なシグナル指定などで処理できませんでした。
使用例
kill 1234kill -TERM 1234kill -HUP 4321kill -0 9999kill -9 1234
よくあるエラー
-
killしたのにすぐ止まらない 原因: 既定のTERMは穏やかな終了要求であり、後処理中のことがあります。対処: 少し待ち、必要ならログを確認した上で最終手段としてKILLを検討します。
-
kill -9ばかり使ってしまう 原因: シグナルの役割を分けて理解していません。対処: まずTERMを試し、KILLは最後にします。
導入・互換性情報
シェル組み込みのkillと外部コマンドのkillがあり、ジョブ指定の扱いなどで差が出ます。
注意点 / セキュリティリスク
危険度は中程度です。PIDを取り違えると別の処理を止めてしまいます。特にroot権限での実行は影響範囲が広くなります。
FAQ
-
Q. killは必ずプロセスを終了させますか。 A. いいえ。シグナル送信が本質で、送るシグナルにより意味が変わります。
-
Q. kill -0は何のために使いますか。 A. 対象を止めずに存在や送達可能性を確認するために使います。
参照リンク
- カテゴリー: Process And Jobs
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎