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

コマンド練習22
「コマンド練習22」では、7章の前半で登場したコマンドについて 学びます。ここで扱うのは kill と killall です。これらのコマンドは、Linux システム上で動作しているプロセスに対して シグナルを送信して終了・制御するためのコマンド です。プロセスを停止したり、特定のプログラムをまとめて終了する場面でよく使われます。
killは プロセス ID (PID) を指定してシグナルを送信するコマンドkillallは プロセス名 を指定してシグナルを送信するコマンド
以下で詳しく解説し、その後に練習問題と模範解答例を提示します。

コマンド解説
1.kill コマンド
プロセス ID (PID) を指定してシグナルを送信します。最もよく使うのはプロセスを終了させる SIGTERM (15) や SIGKILL (9) です。
書式
kill [シグナル] PID主なシグナル
| シグナル | 略記 | 説明 |
|---|---|---|
| 1 | SIGHUP | 再読み込み(デーモン再起動など) |
| 9 | SIGKILL | 強制終了 |
| 15 | SIGTERM | 通常終了(デフォルト) |
2.killall コマンド
プロセス名を指定して、同名のプロセスにシグナルを送信します。複数の同じプログラムを一括で終了させるときに便利です。
書式
killall [シグナル] プロセス名練習問題 + 模範解答例
問題1
無限ループするシェルスクリプト loop1.sh を作成し、バックグラウンドで実行してください。その後、ps コマンドでプロセス ID を確認してください。
模範解答例
[user@rocky9 ~]$ echo -e '#!/bin/bash\nwhile true; do echo "loop1"; sleep 5; done' > loop1.sh
[user@rocky9 ~]$ chmod +x loop1.sh
[user@rocky9 ~]$ ./loop1.sh &
[1] 5395
loop1
[user@rocky9 ~]$ ps -ef | grep loop1.sh
user 5395 5318 0 23:02 pts/0 00:00:00 /bin/bash ./loop1.sh
user 5403 5318 0 23:02 pts/0 00:00:00 grep --color=auto loop1.sh問題2
先ほど実行した loop1.sh プロセスを kill コマンド を使って終了してください。
模範解答例
# kill -9 <PID>
[user@rocky9 ~]$ kill -9 5395
[1]+ 強制終了 ./loop1.sh問題3
新たに無限ループするスクリプト loop2.sh を作成し、バックグラウンドで実行してください。その後、killall を使ってプロセスを終了してください。
模範解答例
[user@rocky9 ~]$ echo -e '#!/bin/bash\nwhile true; do echo "loop2"; sleep 5; done' > loop2.sh
[user@rocky9 ~]$ chmod +x loop2.sh
[user@rocky9 ~]$ ./loop2.sh &
[1] 5486
loop2
[user@rocky9 ~]$ killall loop2.sh
[1]+ Terminated ./loop2.sh問題4
無限ループスクリプト loop3.sh を2つ同時に起動し、killall を使ってまとめて終了してください。
模範解答例
[user@rocky9 ~]$ echo -e '#!/bin/bash\nwhile true; do echo "loop3"; sleep 5; done' > loop3.sh
chmod +x loop3.sh
[user@rocky9 ~]$ chmod +x loop3.sh
[user@rocky9 ~]$ ./loop3.sh &
[1] 5513
loop3
[user@rocky9 ~]$ ./loop3.sh &
[2] 5519
loop3
[user@rocky9 ~]$ killall loop3.sh
[1]- Terminated ./loop3.sh
[2]+ Terminated ./loop3.sh
まとめ
「コマンド練習22」では、7章の前半で登場したコマンドについて 学びました。
killは PID を指定してシグナルを送信するコマンドkillallは プロセス名を指定して同名プロセスをまとめて制御できるコマンド
これらを使いこなすことで、システム管理やトラブルシューティング時に 不要なプロセスを適切に制御する力 を身につけられます。
