このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
新Linuxコマンド演習52

新Linuxコマンド演習52 概要
「新Linuxコマンド演習52」では、killコマンドおよびkillallコマンドを使用して、
特定のプロセスにシグナルを送信し、安全に終了・強制終了する操作を学びます。
Linuxでは、すべてのプロセスが「シグナル」と呼ばれるメッセージを受け取る仕組みを持っています。
たとえば、ユーザーがプロセスを停止・再開・終了したいときには、
このシグナルを使ってプロセスに指示を送ります。

kill・killall コマンドの概要
| コマンド | 主な目的 | 主なオプション | 説明 |
|---|---|---|---|
| kill | 特定のプロセスID(PID)にシグナルを送信する | -l, -9, -15 | 任意のPIDに対して終了シグナルを送信 |
| killall | プロセス名を指定してシグナルを送信する | -SIGTERM, -SIGKILL | 同一名の全プロセスを一括終了 |
表の説明
kill は PID(プロセスID) を指定してシグナルを送信します。
一方 killall は プロセス名 を指定して、同名のプロセスすべてにシグナルを送信します。
たとえば「gedit」や「firefox」など、複数のインスタンスが動作している場合に便利です。
主なシグナル一覧
| シグナル名 | 番号 | 意味 | 説明 |
|---|---|---|---|
| SIGHUP | 1 | ハングアップ | 設定再読み込みやセッション切断通知 |
| SIGINT | 2 | 割り込み | Ctrl + C で送信される一般的な終了要求 |
| SIGTERM | 15 | 終了要求 | 通常のプロセス終了(安全に停止) |
| SIGKILL | 9 | 強制終了 | 即時終了(プロセスは後処理不可) |
| SIGSTOP | 19 | 一時停止 | プロセスを停止するが削除しない。 |
| SIGCONT | 18 | 再開 | 停止したプロセスを再開する。 |
補足
SIGTERM(15)はプロセスに正常終了のチャンスを与えます。
SIGKILL(9)は強制終了であり、プロセスは後処理できません。
そのため、まずはSIGTERMを使用し、どうしても終了しない場合のみSIGKILLを使うのが原則です。
演習問題+模範解答例
演習01:利用可能なシグナルの一覧を表示する
問題
kill コマンドを使用して、利用可能なシグナルの一覧を表示してください。
模範解答例
[suzuki@AlmaLinux ~]$ 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
...
63) SIGRTMAX-1 64) SIGRTMAX解説
kill -l は、システムで利用可能な全シグナルの一覧を表示します。
各シグナルには名前(例:SIGTERM)と番号(例:15)が割り当てられています。
コマンド実行時にはどちらの形式(名前または番号)でも指定可能です。
演習02:プロセスを強制終了する
問題
gedit をバックグラウンドで起動し、そのプロセスを強制終了してください。
(※PIDは実行時に確認すること)
模範解答例
[suzuki@AlmaLinux ~]$ gedit &
[1] 5205
[suzuki@AlmaLinux ~]$ ps
PID TTY TIME CMD
5043 pts/0 00:00:00 bash
7429 pts/0 00:00:00 gedit
7433 pts/0 00:00:00 psgedit がバックグラウンドで起動したことを確認します。

次に、PID「7429」を指定して強制終了します。
[suzuki@AlmaLinux ~]$ kill -9 7429
[1]+ 強制終了 gedit解説
kill -9 は SIGKILL シグナルを送信します。
これはプロセスが後処理を行う暇もなく即座に終了させるため、最終手段として使用します。
通常はまず kill -15(SIGTERM)で安全に終了できるか試すのが望ましいです。
演習03:プロセス名を指定して終了する
問題
firefox をバックグラウンドで起動し、killall コマンドを使ってプロセス名を指定して終了させてください。
模範解答例
[suzuki@AlmaLinux ~]$ firefox &
[2] 7481
[1] 強制終了 gedit
[suzuki@AlmaLinux ~]$ ps
PID TTY TIME CMD
6405 pts/0 00:00:00 bash
7481 pts/0 00:00:08 firefox
7578 pts/0 00:00:00 Socket Process
7614 pts/0 00:00:00 WebExtensions
7619 pts/0 00:00:00 RDD Process
7630 pts/0 00:00:00 Isolated Web Co
7678 pts/0 00:00:00 file:// Content
7696 pts/0 00:00:00 Privileged Cont
7774 pts/0 00:00:00 Utility Process
7782 pts/0 00:00:00 Web Content
7784 pts/0 00:00:00 Web Content
7806 pts/0 00:00:00 Web Content
7875 pts/0 00:00:00 psfirefox 関連の複数プロセスが動作していることが分かります。

これを一括で終了します。
[suzuki@AlmaLinux ~]$ killall -SIGTERM firefox
解説
killall はプロセス名を指定して同名プロセスを一括で制御します。
-SIGTERM は「安全な終了要求」を送信します。
終了しない場合は、次のように SIGKILL を使います。
killall -9 firefoxまとめ
「新Linuxコマンド演習52」では、
Linuxにおけるプロセス制御の基本である シグナル送信の仕組み を学びました。
学習ポイント
- kill -l でシグナル一覧を確認できる
- kill -15 <PID>(SIGTERM)で安全に終了
- kill -9 <PID>(SIGKILL)は即時強制終了
- killall はプロセス名単位で一括終了可能
💡 注意点
kill -9 はプロセスに後処理の機会を与えないため、保存されていないデータ損失のリスクがあります。
安全に停止できる場合は、まず SIGTERM を使用しましょう。
