kill コマンド
プロセスを終了させるか、シグナルを送信します。
概要
kill
コマンドはプロセスにシグナルを送信するコマンドで、最も一般的には実行中のプロセスを終了させるために使用されます。デフォルトでは TERM(終了)シグナルを送信しますが、プロセスID(PID)またはジョブ指定で識別されるプロセスに対して、任意の指定されたシグナルを送信することができます。
オプション
-s, --signal [シグナル]
送信するシグナルを指定します(名前または番号で)
$ kill -s SIGTERM 1234
-l, --list [シグナル]
利用可能なシグナル名を一覧表示するか、シグナル名と番号を相互に変換します
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
-9
SIGKILL シグナルを送信します。これはプロセスの強制終了を行い、プロセスによってキャッチまたは無視することはできません
$ kill -9 1234
-15
SIGTERM シグナル(デフォルト)を送信します。これは正常な終了をリクエストします
$ kill -15 1234
使用例
PID でプロセスを終了させる
$ kill 1234
プロセスを強制的に終了させる
$ kill -9 1234
名前で特定のシグナルを送信する
$ kill -s SIGHUP 1234
複数のプロセスにシグナルを送信する
$ kill -TERM 1234 5678 9012
ヒント:
最初にプロセスIDを見つける
kill を使用する前に ps
または pgrep
を使用して PID を見つけます:
$ pgrep firefox
1234
$ kill 1234
名前ベースの終了には pkill を使用する
PID を最初に見つける代わりに、pkill
を使用して名前でプロセスを終了させます:
$ pkill firefox
シグナルの違いを理解する
- SIGTERM (15): デフォルトのシグナルで、終了前にプロセスがクリーンアップすることを許可します
- SIGKILL (9): 強制終了、必要な場合にのみ使用します
- SIGHUP (1): プロセスに設定を再読み込みさせるためによく使用されます
よくある質問
Q1. kill -9 と kill -15 の違いは何ですか?
A. kill -15
(SIGTERM)は正常な終了をリクエストし、プロセスがクリーンアップすることを許可します。kill -9
(SIGKILL)は即時終了を強制し、プロセスによってキャッチまたは無視することはできません。
Q2. PID がわからない場合、どうやってプロセスを終了させますか?
A. プロセス名の後に pkill
を使用します:pkill firefox
。あるいは、ps aux | grep プロセス名
で最初に PID を見つけることもできます。
Q3. なぜ kill -9 が時々機能しないのですか?
A. 中断不可能なスリープ状態(通常はI/O待ち)のプロセスやゾンビプロセスは、SIGKILL でも終了させることができません。また、あなたが所有しているプロセスまたはroot権限がある場合のみ終了させることができます。
Q4. 特定のユーザーのすべてのプロセスを終了させるにはどうすればよいですか?
A. pkill -u ユーザー名
を使用して、特定のユーザーが所有するすべてのプロセスを終了させます。
参考文献
https://www.gnu.org/software/coreutils/manual/html_node/kill-invocation.html
改訂履歴
- 2025/05/05 初版