2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

killallやpkillを使いこなそう

Last updated at Posted at 2024-11-10

killallやpkill 使っていますか!

Linucの勉強をしていてkillallやpgrepの便利さに感動したのでシェアしたいと思い記事を書きました。
一つのプロセスをキルする目的であればkillコマンドで事足りますが、複数のプロセスをキルしないといけない場合はkillallやpkillを使ったほうが良いです。

killとkillallの違い

  • killはプロセスIDを指定するが、killallはプロセス名を指定する
  • killは1つのプロセスをキルするが、killallは複数のプロセスをキルする

実際に使ってみよう

実際にkillallを使うシチュエーションを再現して、killallを使ってみましょう。

↓のシェルスクリプトを作ってください。
今回はファイル名killall_test.shとしました。

#!/bin/bash

while true; do
  echo "無限ループなう"
  sleep 1
done

実行権限を付与します。
chmod u+x killall_test.sh

バックグラウンドでkillall_test.shを実行するコマンドを複数回実行します。(実行した回数だけプロセスが増えます)
nohup ./killall_test.sh &

psコマンドでkillall_test.shのプロセスが立ち上がっているか確認しましょう
ps x | grep killall

6つ立ち上がっているようです。

 404506 pts/0    S      0:00 /bin/bash ./killall_test.sh
 404565 pts/0    S      0:00 /bin/bash ./killall_test.sh
 404620 pts/0    S      0:00 /bin/bash ./killall_test.sh
 404677 pts/0    S      0:00 /bin/bash ./killall_test.sh
 404735 pts/0    S      0:00 /bin/bash ./killall_test.sh
 404792 pts/0    S      0:00 /bin/bash ./killall_test.sh
 404958 pts/0    S+     0:00 grep --color=auto killall

killall killall_test.shを実行してみましょう

すると
6つ立ち上がっていたkillall_test.shにSIGTERMが送られてプロセスが終了されました。

[1]   Terminated              nohup ./killall_test.sh
[2]   Terminated              nohup ./killall_test.sh
[3]   Terminated              nohup ./killall_test.sh
[4]   Terminated              nohup ./killall_test.sh
[5]-  Terminated              nohup ./killall_test.sh
[6]+  Terminated              nohup ./killall_test.sh

killallでもプロセスがキルされないときは

killallやkillはSIGTERMをプロセスに送るのがデフォルトの挙動になります。
SIGTERMはプロセスに「終了してください」という命令を送って終了させるものなので、暴走してるプロセスはSIGTERMでは終了しない場合があります。
そのような場合はkillall -s SIGKILL killall_test.shのようにSIGKILLを指定することで強制的にプロセスをキルすることができます。(強制終了なのでSIGTERMで終了出来ない時にのみ使用するのが望ましいかと思います。)

SIGKILLでkillallすると↓のようになります。
先程のTerminatedがKilledに変わっているのが確認できると思います。

[1]   Killed                  nohup ./killall_test.sh
[2]   Killed                  nohup ./killall_test.sh
[3]   Killed                  nohup ./killall_test.sh
[4]   Killed                  nohup ./killall_test.sh
[5]-  Killed                  nohup ./killall_test.sh
[6]+  Killed                  nohup ./killall_test.sh
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?