[Linux] killコマンドの使い方 – 実行中プロセスを終了する

killコマンドは、Linuxで実行中のプロセスにシグナルを送信して制御するためのコマンドです。

主にプロセスを終了させるために使用されます。

基本的な使い方は「kill [シグナル] [プロセスID]」です。

デフォルトでは、シグナル SIGTERM (シグナル番号15)が送信され、プロセスに終了を要求します。

強制終了したい場合は SIGKILL (シグナル番号9)を使用します。

プロセスIDは pstop コマンドで確認できます。

この記事でわかること
  • 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を送信することで、再び実行を開始させることができます。

これにより、プロセスの制御が柔軟に行えます。

その他のシグナル

その他にも多くのシグナルが存在し、それぞれ特定の用途があります。

以下は、いくつかの代表的なシグナルです。

スクロールできます
シグナル名シグナル番号用途
SIGINT2割り込み要求(Ctrl+C)
SIGQUIT3プロセスの終了とコアダンプ
SIGUSR110ユーザー定義のシグナル1
SIGUSR212ユーザー定義のシグナル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コマンドを使用するのが適切です。

このように、目的に応じて使い分けることで、より効率的なプロセス管理が可能になります。

よくある質問

killコマンドでプロセスが終了しない場合はどうすればいいですか?

killコマンドでプロセスが終了しない場合、以下の手順を試してみてください。

  1. シグナルの確認: デフォルトではSIGTERMが送信されますが、プロセスがこのシグナルを無視している可能性があります。

強制終了を試みるために、SIGKILL(シグナル9)を使用します。

コマンドは以下の通りです。

kill -9 <プロセスID>
  1. プロセスの状態を確認: pstopコマンドを使用して、プロセスの状態を確認します。

プロセスがゾンビ状態やデッドロックに陥っている場合、通常の方法では終了できないことがあります。

  1. 再起動を検討: それでも終了できない場合、システム全体を再起動することを検討する必要があります。

killコマンドで間違って重要なプロセスを終了してしまった場合の対処法は?

重要なプロセスを誤って終了してしまった場合、以下の対処法を考慮してください。

  1. プロセスの再起動: 終了したプロセスが自動的に再起動する設定になっている場合、特に何もする必要はありません。

手動で再起動する必要がある場合は、適切なコマンドを使用して再起動します。

  1. データの復元: 重要なデータが失われた場合、バックアップからの復元を検討します。

定期的なバックアップを行っている場合は、そこからデータを復元できます。

  1. ログの確認: プロセスが終了した理由を確認するために、システムログやアプリケーションログをチェックします。

これにより、今後の対策を講じることができます。

killコマンドとkillallコマンドのどちらを使うべきですか?

killコマンドとkillallコマンドは、それぞれ異なるシチュエーションで使用されます。

以下のポイントを考慮して選択してください。

  • killコマンド: 特定のプロセスIDがわかっている場合に使用します。

個別のプロセスを終了させたいときに適しています。

  • killallコマンド: 同名の複数のプロセスを一度に終了させたい場合に使用します。

特定のアプリケーションの全インスタンスを終了させる際に便利です。

このように、目的に応じて適切なコマンドを選択することで、効率的なプロセス管理が可能になります。

まとめ

この記事では、Linuxにおけるkillコマンドの基本的な使い方や、シグナルの種類、応用例、killallコマンドとの違いについて詳しく解説しました。

これにより、プロセス管理の手法を理解し、適切に操作するための知識を得ることができるでしょう。

今後は、実際のシステム管理やトラブルシューティングの際に、これらのコマンドを活用して、効率的にプロセスを制御してみてください。

  • URLをコピーしました!
目次から探す