このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:コマンド練習22

コマンド練習22

 「コマンド練習22」では、7章の前半で登場したコマンドについて 学びます。ここで扱うのは killkillall です。これらのコマンドは、Linux システム上で動作しているプロセスに対して シグナルを送信して終了・制御するためのコマンド です。プロセスを停止したり、特定のプログラムをまとめて終了する場面でよく使われます。

  • killプロセス ID (PID) を指定してシグナルを送信するコマンド
  • killallプロセス名 を指定してシグナルを送信するコマンド

以下で詳しく解説し、その後に練習問題と模範解答例を提示します。

コマンド解説

1.kill コマンド

 プロセス ID (PID) を指定してシグナルを送信します。最もよく使うのはプロセスを終了させる SIGTERM (15)SIGKILL (9) です。

書式

kill [シグナル] PID

主なシグナル

シグナル略記説明
1SIGHUP再読み込み(デーモン再起動など)
9SIGKILL強制終了
15SIGTERM通常終了(デフォルト)

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 は プロセス名を指定して同名プロセスをまとめて制御できるコマンド

 これらを使いこなすことで、システム管理やトラブルシューティング時に 不要なプロセスを適切に制御する力 を身につけられます。