このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】プロセスにシグナルを送信する:killコマンド
killコマンドの概要
kill
コマンドは、指定されたプロセスID(PID)に対してシグナルを送信して、プロセスを制御するためのコマンドです。シグナルを使ってプロセスの終了、再開、一時停止などを行うことができます。
【構文】kill [オプション] PID
主なオプションと説明
オプション | 説明 |
---|---|
-s シグナル名 または -s シグナルID | 送信するシグナルを指定します。例:-s TERM または -s 15 。 |
-シグナル名 または -シグナルID | 送信するシグナルを指定します。例:-TERM または -15 。 |
-l または --list | すべてのシグナル名とその対応する番号を表示します。 |
killコマンドで指定できるシグナルを表示:kill -l
コマンド
「kill -l
」コマンドを実行すると、システムで利用可能なすべてのシグナル名とその対応する番号のリストが表示されます。
user01@ubuntu-vm:~$ 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
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
シグナルの指定方法
シグナルを指定する際は、シグナル名(先頭の「SIG」を除いた名称も可)あるいはシグナルIDを使います。例えば、SIGTERM
はTERM
や15
として指定できます。
killコマンドで何もシグナルを指定しない場合は、SIGTERMシグナルがプロセスに送信されます。
代表的なシグナル
シグナル名 | シグナルID | 説明 |
---|---|---|
SIGHUP | 1 | ハングアップ(プロセスの再起動) |
SIGINT | 2 | 割り込み(通常はCtrl+Cによって送信される) |
SIGKILL | 9 | 強制終了(プロセスを即座に終了) |
SIGTERM | 15 | 終了(プロセスに終了要求を送る) |
SIGCONT | 18 | 停止中のプロセスを再開 |
SIGSTOP | 19 | プロセスの停止(再開不可、親プロセスが再開可能) |
SIGTSTP | 20 | 端末からの停止要求(通常はCtrl+Zによって送信される) |
コマンドの使用例と解説
1.tmuxコマンドの実行
- 「
tmux
」コマンドを実行します。
user01@ubuntu-vm:~$ tmux
tmux
コマンドを実行すると、画面がリフレッシュされ、新たに操作画面(ウィンドウ)と実行環境(ペイン)が生成されます。
2.ペインを上下に分割する
- プレフィックスキー(「Ctrl」+「b」)を押した後、「"」キーを押します。
これで上下のペイン間を自由に移動できるようになります。下のペインが、カレントペインとなります。
3.上のペインへの移動
- プレフィックスキー(「Ctrl」+「b」)を押した後、「o」キーを押します。
4.sleepコマンドの実行
- 上のペインで「
sleep 3600
」コマンドを実行します。sleep
コマンドは指定した秒数だけ停止するコマンドです。3600秒を指定して1時間、停止させます。
5.下のペインに移動する
sleep
コマンドが実行されている間に、下のペインに移動します。- プレフィックスキー(「Ctrl」+「b」)を押した後、「o」キーを押します。
6.sleepコマンドのPIDを調べる
- 「
pgrep sleep
」コマンドでsleep
コマンドのPIDを特定します。
7.killコマンドでsleepコマンドのプロセスを終了させる
- 例えば、「
kill 3808
」コマンドを実行します。
※PIDは実行環境で異なります。
sleep
コマンドが実行されていた上のペインには「Terminated」と表示され、プロンプトが表示されます。これは、kill
コマンドからsleep
コマンドのプロセスにSIGTERM
シグナルが送信されてsleep
コマンドのプロセスが終了したことを意味します。
8.ペインの終了
- ペインを終了させるには「
exit
」コマンドを使用します。下のペインを「exit
」コマンドで終了させます。
- もう一度、残ったペインで「
exit
」コマンドを実行して終了させます。
- もとのシェルに戻ります。
まとめ
kill
コマンドは、プロセスの制御に非常に重要なツールです。適切なシグナルを使用してプロセスを終了、一時停止、再開することで、システムの管理とトラブルシューティングに役立ちます。シグナルは名前やIDで指定でき、kill -l
コマンドで利用可能なシグナルの一覧を確認することができます。これにより、プロセス管理の柔軟性が大幅に向上します。