名前でプロセスを殺す方法
Linuxシステムでプロセスを終了させる方法は、管理者やユーザーが知っておくべき重要なことです。これには通常、killコマンドを使用し、プロセスID(PID)を用いてプロセスを終了させる方法が一般的です。
ただし、時にはプロセスを名前で終了させる方が、毎回PIDを見つける手順を踏むよりも便利です。プロセスを名前で終了させるために使用できる2つのコマンドがあります。それは、killallとpkillです。
このチュートリアルでは、killallとpkillコマンドの両方について説明し、名前のみでプロセスを終了させる方法の例を示します。
このチュートリアルでは、あなたは学びます:
- killallとpkillを使って名前でプロセスを終了させる方法
Linuxで名前でプロセスを終了する
killall と pkill を使って名前でプロセスを終了する
おそらくあなたが最初に疑問に思うのは、killallがkillとどのように異なるかということです。主に2つの重要な違いがあります。第一に、killallはPIDの代わりにプロセス名を引数として受け取ります。もう1つの違いは、killallが名前付きプロセスのすべてのインスタンスを終了させることです。これは、あなたが明示的に指定したプロセスだけを終了させる通常のkillコマンドとは対照的です。
pkillとは異なり、killallではプロセスの正確な名前を指定する必要があります。1つのコマンドで同じbashスクリプトのいくつかのインスタンスを終了させる方法の例を見てみましょう。
killall example.sh
名前でプロセスを終了させるためにkillallコマンドを使用する
この場合、すべてのプロセスを1つのコマンドで終了させる方が、各PIDを指定してkillを使うよりも確実に簡単です。しかし、killallは区別せず、例として私たちのスクリプトのすべてのインスタンスを対象にします。もし、たとえばそのうちの2つだけを終了させたかった場合は、まだkillコマンドを使わざるを得ません。
私たちが使用できた別のコマンドはpkillです。これは、killallとは異なり、プロセスの正確な名前を指定する必要がありません。したがって、前の例を使用すると、次のようなコマンドでexample.shの3つのプロセスすべてを終了させることができます:
pkill examp
名前またはパターンでプロセスを終了するためにpkillコマンドを使用します
ご想像の通り、pkill コマンドを使用する際は非常に注意が必要です。意図しないプロセスを終了させてしまう可能性があるからです。例えば、別のスクリプト example2.sh が実行中の場合、先ほどのコマンドもそれを終了させてしまいます。時にはこれが良い結果をもたらすこともありますが、パターンマッチングが意図した以上に多くのプロセスに影響を及ぼす可能性があることを認識しておいてください。pkill によって終了されるプロセスの数をプレビューするために、pgrep コマンドを使用することもできます。
pgrep example
17555
17557
17559
したがって、pkill example は3つのプロセスを終了させます。
killall および pkill コマンドは、通常の kill コマンドと同じオプションのほとんどを受け入れることに注意してください。たとえば、kill と指定する一般的なオプションは、プロセスに SIGKILL シグナルを送信するための -9 です。この構文は、他の2つのコマンドでも同様に機能します。以下の例を見てください。
kill -9 1234
killall -9 example.sh
pkill -9 example.sh
結論
このガイドでは、killallおよびpkillコマンドを使用して名前でプロセスを終了させる方法を見てきました。これらのコマンドにはそれぞれ独自の広範なオプションリストがあり、その多くは互いに重複したり、killコマンドに基づいています。それでも、killall、pkill、およびkillコマンドにはそれぞれ独自の役割があり、Linux管理者のツールベルトにこれらの3つを持っておくことは便利です。より高度な使用法を理解したい場合は、マニュアルページを確認してください。
man killall
man pkill
man kill


