[Linux] killコマンドの使い方 – 実行中プロセスを終了する
killコマンドは、Linuxで実行中のプロセスにシグナルを送信して制御するためのコマンドです。
主にプロセスを終了させるために使用されます。
基本的な使い方は「kill [シグナル] [プロセスID]」です。
デフォルトでは、シグナル SIGTERM
(シグナル番号15)が送信され、プロセスに終了を要求します。
強制終了したい場合は SIGKILL
(シグナル番号9)を使用します。
プロセスIDは ps
や top
コマンドで確認できます。
- killコマンドの基本的な使い方
- シグナルの種類と用途
- killallコマンドとの違い
- プロセス管理の応用例
- 効率的なプロセス終了方法
killコマンドとは
kill
コマンドは、LinuxやUnix系のオペレーティングシステムにおいて、実行中のプロセスを終了させるためのコマンドです。
プロセスは、コンピュータ上で実行されているプログラムのインスタンスであり、システムリソースを消費します。
時には、特定のプロセスを終了させる必要が生じることがあります。
kill
コマンドは、プロセスID(PID)を指定することで、対象のプロセスにシグナルを送信し、終了や一時停止などの操作を行います。
デフォルトでは、kill
コマンドはSIGTERM(シグナル15)を送信し、プロセスに優雅に終了するよう要求しますが、強制終了が必要な場合はSIGKILL(シグナル9)を使用することもできます。
このように、kill
コマンドはシステム管理やトラブルシューティングにおいて非常に重要な役割を果たします。
killコマンドの基本的な使い方
killコマンドの基本構文
kill
コマンドの基本的な構文は以下の通りです。
kill [オプション] <プロセスID>
ここで、<プロセスID>
は終了させたいプロセスのIDを指定します。
オプションを使用することで、送信するシグナルを変更することも可能です。
デフォルトのシグナル (SIGTERM) でプロセスを終了する
kill
コマンドを使用する際、特にシグナルを指定しない場合、デフォルトでSIGTERM(シグナル15)が送信されます。
これは、プロセスに対して優雅に終了するように要求するシグナルです。
以下のコマンドで、プロセスIDが1234のプロセスを終了させることができます。
kill 1234
このコマンドを実行すると、プロセスは終了するか、終了を試みます。
プロセスがSIGTERMを受け入れない場合、強制終了が必要です。
プロセスIDの確認方法
プロセスを終了させるためには、まずそのプロセスのID(PID)を確認する必要があります。
以下に、いくつかの方法を紹介します。
psコマンドを使ったプロセスIDの確認
ps
コマンドを使用すると、現在実行中のプロセスのリストを表示できます。
以下のコマンドで、全てのプロセスを表示します。
ps aux
このコマンドの出力には、各プロセスのPIDが含まれています。
topコマンドを使ったプロセスIDの確認
top
コマンドは、リアルタイムでプロセスの情報を表示するツールです。
ターミナルでtop
と入力すると、実行中のプロセスが表示され、各プロセスのPIDも確認できます。
終了したいプロセスを見つけたら、そのPIDをメモしておきます。
top
pgrepコマンドを使ったプロセスIDの確認
pgrep
コマンドは、特定のプロセス名に基づいてPIDを取得するための便利なコマンドです。
例えば、httpd
というプロセスのPIDを取得するには、以下のようにします。
pgrep httpd
このコマンドを実行すると、httpd
プロセスのPIDが表示されます。
これにより、特定のプロセスを簡単に見つけることができます。
シグナルの種類と用途
LinuxやUnix系のシステムでは、プロセスに対してさまざまなシグナルを送信することができます。
これにより、プロセスの動作を制御することが可能です。
以下に、一般的なシグナルの種類とその用途を紹介します。
SIGTERM (15) – 通常の終了要求
SIGTERMは、プロセスに対して優雅に終了するよう要求するシグナルです。
プロセスはこのシグナルを受け取ると、リソースの解放やデータの保存を行うことができます。
通常、kill
コマンドを使用して送信されます。
SIGKILL (9) – 強制終了
SIGKILLは、プロセスを即座に終了させるためのシグナルです。
このシグナルは、プロセスがSIGTERMを無視した場合や、応答しない場合に使用されます。
SIGKILLを受けたプロセスは、状態を保存することなく強制的に終了します。
SIGHUP (1) – 設定の再読み込み
SIGHUPは、プロセスに対して設定ファイルの再読み込みを要求するシグナルです。
主にデーモンプロセスに使用され、設定が変更された際に新しい設定を適用するために利用されます。
例えば、Webサーバーの設定を変更した後に、SIGHUPを送信することで新しい設定を反映させることができます。
SIGSTOP (19) – プロセスの一時停止
SIGSTOPは、プロセスを一時的に停止させるためのシグナルです。
このシグナルを受けたプロセスは、実行を中断し、再開されるまで待機状態になります。
SIGSTOPは、プロセスを強制的に停止させるため、通常の終了要求とは異なります。
SIGCONT (18) – 一時停止したプロセスの再開
SIGCONTは、一時停止されたプロセスを再開させるためのシグナルです。
SIGSTOPで停止したプロセスに対してSIGCONTを送信することで、再び実行を開始させることができます。
これにより、プロセスの制御が柔軟に行えます。
その他のシグナル
その他にも多くのシグナルが存在し、それぞれ特定の用途があります。
以下は、いくつかの代表的なシグナルです。
シグナル名 | シグナル番号 | 用途 |
---|---|---|
SIGINT | 2 | 割り込み要求(Ctrl+C) |
SIGQUIT | 3 | プロセスの終了とコアダンプ |
SIGUSR1 | 10 | ユーザー定義のシグナル1 |
SIGUSR2 | 12 | ユーザー定義のシグナル2 |
これらのシグナルを適切に使用することで、プロセスの管理や制御がより効果的に行えます。
killコマンドの応用例
kill
コマンドは、単一のプロセスを終了させるだけでなく、さまざまな応用が可能です。
以下に、いくつかの具体的な応用例を紹介します。
複数のプロセスを一度に終了する
複数のプロセスを一度に終了させるには、プロセスIDをスペースで区切って指定します。
例えば、プロセスIDが1234と5678のプロセスを同時に終了させるには、以下のようにします。
kill 1234 5678
このコマンドを実行すると、指定した両方のプロセスにSIGTERMが送信されます。
プロセスグループ全体を終了する
特定のプロセスグループ全体を終了させるには、kill
コマンドに-
オプションを使用します。
プロセスグループIDを指定することで、そのグループに属する全てのプロセスを終了させることができます。
以下のコマンドは、プロセスグループIDが1000の全てのプロセスを終了させます。
kill -TERM -1000
ユーザーごとにプロセスを終了する
特定のユーザーが所有する全てのプロセスを終了させるには、pkill
コマンドを使用します。
例えば、ユーザー名がusername
の全てのプロセスを終了させるには、以下のようにします。
pkill -u username
このコマンドは、指定したユーザーが実行している全てのプロセスにSIGTERMを送信します。
プロセスを一時停止してから再開する
プロセスを一時停止させるには、SIGSTOPを使用します。
例えば、プロセスIDが1234のプロセスを一時停止させるには、以下のようにします。
kill -STOP 1234
その後、再開させるにはSIGCONTを送信します。
kill -CONT 1234
このようにして、プロセスを一時的に停止し、必要に応じて再開させることができます。
シグナルを使ってプロセスを制御する
kill
コマンドでは、さまざまなシグナルを指定してプロセスを制御することができます。
例えば、プロセスに対して設定の再読み込みを要求するSIGHUPを送信するには、以下のようにします。
kill -HUP 1234
このように、シグナルを使い分けることで、プロセスの動作を柔軟に制御することが可能です。
シグナルの種類や用途を理解しておくことで、より効果的なプロセス管理が実現できます。
killallコマンドとの違い
kill
コマンドとkillall
コマンドは、どちらもプロセスを終了させるために使用されますが、使い方や対象が異なります。
以下に、killall
コマンドの基本的な使い方や、kill
コマンドとの違いについて説明します。
killallコマンドの基本的な使い方
killall
コマンドは、指定したプロセス名に基づいて、同名の全てのプロセスにシグナルを送信します。
基本的な構文は以下の通りです。
killall [オプション] <プロセス名>
例えば、httpd
というプロセス名の全てのインスタンスを終了させるには、以下のようにします。
killall httpd
このコマンドを実行すると、httpd
という名前の全てのプロセスにSIGTERMが送信されます。
プロセス名での終了
killall
コマンドの大きな特徴は、プロセスIDではなくプロセス名を指定して終了できる点です。
これにより、同じ名前の複数のプロセスを一度に終了させることができます。
例えば、firefox
というプロセス名の全てのインスタンスを終了させるには、次のようにします。
killall firefox
このコマンドは、firefox
という名前の全てのプロセスに対してSIGTERMを送信し、同時に終了させます。
killコマンドとの使い分け
kill
コマンドとkillall
コマンドは、使用するシチュエーションによって使い分けることが重要です。
以下のポイントを考慮して選択します。
コマンド名 | 使用シチュエーション |
---|---|
kill | 特定のプロセスIDを指定して終了したい場合 |
killall | 同名の全てのプロセスを一度に終了したい場合 |
例えば、特定のプロセスIDがわかっている場合はkill
コマンドを使用し、同じ名前の複数のプロセスを一度に終了させたい場合はkillall
コマンドを使用するのが適切です。
このように、目的に応じて使い分けることで、より効率的なプロセス管理が可能になります。
よくある質問
まとめ
この記事では、Linuxにおけるkill
コマンドの基本的な使い方や、シグナルの種類、応用例、killall
コマンドとの違いについて詳しく解説しました。
これにより、プロセス管理の手法を理解し、適切に操作するための知識を得ることができるでしょう。
今後は、実際のシステム管理やトラブルシューティングの際に、これらのコマンドを活用して、効率的にプロセスを制御してみてください。