実行中のプロセスを強制終了する必要がありますか? Linuxのkillコマンドは、まさにそのために構築されています。完璧なオペレーティングシステムはありません。したがって、Linuxシステムは時折応答しないプロセスに対処しなければならないのが一般的です。
プロセスを終了する必要がある場合に対処するには、Linuxでkillコマンドを使用します。
このチュートリアルでは、killコマンドがどのように機能するかを理解します。後で、要件にkillコマンドを使用しようとします。
killコマンドの基本
Linuxユーザーが誤動作している可能性のあるプロセスを終了するのに役立つユーティリティがいくつかあります。 Linuxのkillコマンドでこの目的に最も一般的に使用されるユーティリティの1つ。
Linuxのkillコマンドは、コマンドラインを使用してプロセスを手動で強制終了するために使用されます。これは、bashなどのBourneシェルから派生したほとんどのシェル用のシェル組み込みユーティリティです。
Linuxでのbash組み込みバージョンのkillコマンドのオプションは、/ bin/killにあるスタンドアロンの実行可能ファイルとは少し異なります。
ただし、このチュートリアルでは、bash組み込みバージョンのkillコマンドを使用します。システム上のkillコマンドを含むすべての場所を確認するには、ターミナルで次のコマンドを入力します。
root@ubuntu:~# type -a kill kill is a shell builtin kill is /bin/kill
上記のスクリーンショットのような出力が得られるはずです。この出力は、シェルビルトインバージョンのkillコマンドがスタンドアロンの実行可能ファイルよりも優先されることを確認します。
したがって、killコマンドを使用すると、bash組み込みバージョンが実行されます。コマンドのフルパスを/bin/ kill /として使用すると、実行可能ファイルを使用できます。ただし、bash組み込みバージョンのkillコマンドを続行します。
LinuxでのKillコマンド
コマンドを理解する最良の方法は、その構文を理解することです。 Linuxでのkillコマンドの構文は次のようになります。
kill [option] PID
コマンドkill プロセスにシグナルを送信するために使用されます。このシグナルは、killコマンドの呼び出し中に使用されるオプションによって決定されます。
killコマンドを使用したプロセス終了シグナル
さまざまなオプションから選択できますが、ここでは、最も一般的に使用されるオプションを以下の表に示します。
オプション | 信号番号 | アクション |
SIGTERM | 15 | SIGTERMシグナルは、プロセスを正常に終了するように指示するために使用されます。このkillシグナルは、プロセスによって解釈されるか、無視される可能性があります。 |
SIGKILL | 9 | SIGKILLシグナルは、プロセスを強制的に終了させるために使用されます。これは、どのような場合でもプロセスが無視できないシグナルです。 |
SIGHUP | 1 | SIGHUP信号は、プロセスを「ハングアップ」するために使用されます。これは、プロセスを再開するために使用できます。 |
SIGINT | 2 | SIGINTシグナルは、ユーザーがプロセスを中断したいときに使用されます。 |
オプションを指定しない場合、killコマンドにはデフォルトのオプションが使用されます。 LinuxでのkillコマンドのデフォルトオプションはSIGTERMです。オプションは、killコマンドで3つの異なる方法で使用できます。
信号番号の使用
kill -9 [PID]
「SIG」プレフィックス付き
kill -SIGKILL [PID]
「SIG」プレフィックスなし
kill -KILL [PID]
Linuxでkillコマンドを使用する場合のプロセスID(PID)は何ですか?
最後のパラメータであるPIDに移ります。 PIDは、特定のプロセスのプロセスIDを指します。プロセスが開始されるたびに、カーネルによって一意のIDが割り当てられます。
LinuxのkillコマンドでPIDを使用して、killシグナルの送信先のプロセスを指定します。
killコマンドで使用されるPIDには、任意の整数値を指定できます。これは、PIDの値とkillコマンドへの影響を含むリストです。
PIDの値 | キルコマンドへの影響 |
PID> 0 | これにより、適切なkillシグナルがプロセスに送信されます。このシグナルは、コマンドで指定されたPIDと等しいPIDとして処理されます。 |
PID =0 | これにより、コマンドを呼び出したプロセスと同じグループで実行されているすべてのプロセスに適切なkillシグナルが送信されます。 |
PID =-1 | これにより、コマンドを呼び出したプロセスと同じユーザーの下で実行されているすべてのプロセスに適切なkillシグナルが送信されます。このようなコマンドがrootユーザーによって呼び出された場合、killシグナルはkillプロセスとinitプロセスを除くすべてのプロセスに送信されます。 |
PID <-1 | これにより、グループIDがkillコマンドで使用されるPIDの絶対値と等しくなるように、グループで実行されているすべてのプロセスに適切なkillシグナルが送信されます。 |
プロセスのPIDを知りたい場合は、次のコマンドを使用します。
pidof <processname>
このコマンドは、指定されたプロセスのすべてのPIDを返します。これで、このPIDを使用して、目的のkillシグナルをプロセスに送信できます。
killコマンドの使用
これで、Linuxのkillコマンドとそのパラメーターについての理解が深まりました。次に、この知識を使用して、killコマンドの使用を含む2つの一般的な操作を実行します。
プロセスの強制終了
Linuxでのkillコマンドの最も一般的な使用法は、その名前が示すように、プロセスを強制終了することです。ここでは、killコマンドを使用してシステムの最上位のコマンドプロセスを強制終了することを選択します。
このデモンストレーションでは、これらのプロセスを作成するために、複数のシェルでトップを実行するだけです。
そのためには、最初に次のコマンドを使用して、最上位のコマンドプロセスに関連付けられているPIDを見つけます。
pidof top
ここで、SIGKILL killシグナルを使用して、topコマンドに関連付けられているすべてのプロセスを強制終了します。
プロセスのリロード
Linuxでkillコマンドを使用して実行できる別の機能は、プロセスを再起動することです。これは、サービスが実行されているが、最近の変更を有効にするために構成ファイルを再度読み取る必要がある場合に役立ちます。
たとえば、システムにLighttpdサーバープロセスをリロードする場合は、次のコマンドを実行できます。
sudo kill -SIGHUP <process ID of Lighttpd>
結論
プロセスが応答しなくなった場合、それを再開する方法はありません。手元にある利用可能なオプションは、システムを再起動するか、特定のプロセスを終了することだけです。このチュートリアルを通じて、killコマンドを十分に理解できるようになったことを願っています。
Linuxでkillコマンドを試してみてください。コメント、提案、フィードバックがある場合は、下のコメントセクションからお気軽にご連絡ください。