Linuxは優れた高度なオペレーティングシステムですが、完璧ではありません。ときどき、一部のアプリケーションが不規則に動作し始め、応答しなくなったり、多くのシステムリソースを消費し始めたりする場合があります。元のアプリケーションプロセスが完全にシャットダウンすることはないため、応答しないアプリケーションを再起動することはできません。唯一の解決策は、システムを再起動するか、アプリケーションプロセスを強制終了することです。
killで誤ったプロセスを終了できるユーティリティがいくつかあります 最も一般的に使用されているものです。
kill コマンド#
kill は、BashやZshなどのほとんどのBourne派生シェルに組み込まれているシェルです。コマンドの動作は、シェルとスタンドアロンの/bin/killでわずかに異なります。 実行可能ファイル。
typeを使用します killを含むシステム上のすべての場所を表示するコマンド :
type -a kill kill is a shell builtin
kill is /bin/kill
上記の出力は、シェルビルトインがスタンドアロンの実行可能ファイルよりも優先され、killと入力するたびに使用されることを示しています。 。バイナリを使用する場合は、ファイル/bin/killへのフルパスを入力します 。この記事では、Bashビルトインを使用します。
killの構文 コマンドの形式は次のとおりです。
kill [OPTIONS] [PID]...
kill コマンドは、指定されたプロセスまたはプロセスグループにシグナルを送信し、シグナルに従って動作させます。信号が指定されていない場合、デフォルトで-15になります。 (-TERM)。
最も一般的に使用される信号は次のとおりです。
-
1(HUP)-プロセスをリロードします。 -
9(KILL)-プロセスを強制終了します。 -
15(TERM)-プロセスを適切に停止します。
使用可能なすべてのシグナルのリストを取得するには、-lを指定してコマンドを呼び出します。 オプション:
kill -l
信号は、次の3つの方法で指定できます。
- 番号を使用する(例:
-1または-s 1。 - 「SIG」プレフィックスを使用する(例:
-SIGHUPまたは-s SIGHUP。 - 「SIG」プレフィックスなし(例:
-HUPまたは-s HUP。
次のコマンドは互いに同等です。
kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -HUP PID_NUMBER
killに提供されたPID コマンドは次のいずれかになります:
-
PIDの場合 がゼロより大きい場合、シグナルはPIDと等しいIDでプロセスに送信されます 。 -
PIDの場合 がゼロに等しい場合、信号は現在のプロセスグループ内のすべてのプロセスに送信されます。つまり、シグナルは、killを呼び出したシェルのGIDに属するすべてのプロセスに送信されます。 指図。ps -efjを使用します プロセスグループID(GID)を表示するコマンド。 -
PIDの場合-1と等しい 、シグナルは、コマンドを呼び出したユーザーと同じUIDを持つすべてのプロセスに送信されます。呼び出し元のユーザーがrootの場合、シグナルはinitとkillを除くすべてのプロセスに送信されます。 自分自身を処理します。 -
PIDの場合-1未満です 、信号は、PIDの絶対値に等しいGIDを持つプロセスグループeq内のすべてのプロセスに送信されます。 。
通常のユーザーは自分のプロセスにシグナルを送信できますが、他のユーザーに属するプロセスには送信できませんが、rootユーザーは他のユーザーのプロセスにシグナルを送信できます。
killを使用してプロセスを終了する コマンド#
killを使用してプロセスを終了または強制終了するには コマンドでは、最初にプロセスID番号(PID)を見つける必要があります。これは、topなどのさまざまなコマンドを使用して実行できます。 、ps 、pidof およびpgrep 。
Firefoxブラウザが応答しなくなったため、Firefoxプロセスを強制終了する必要があるとします。ブラウザのPIDを見つけるには、pidofを使用します コマンド:
pidof firefox このコマンドは、すべてのFirefoxプロセスのIDを出力します:
6263 6199 6142 6076
プロセス番号がわかったら、TERMを送信してすべてのプロセス番号を強制終了できます。 信号:
kill -9 6263 6199 6142 6076 PIDを検索してからプロセスを強制終了する代わりに、上記のコマンドを1つに組み合わせることができます。
kill -9 $(pidof firefox) killを使用したプロセスの再読み込み コマンド#
killのもう1つの一般的な使用例 HUPを送信することです シグナル。設定をリロードするようにプロセスに指示します。
たとえば、Nginxをリロードするには、マスタープロセスにシグナルを送信する必要があります。 NginxマスタープロセスのプロセスIDは、nginx.pidにあります。 ファイル。通常は/var/runにあります。 ディレクトリ。
catを使用する マスターPIDを見つけるコマンド:
cat /var/run/nginx.pid 30251
マスターPIDを見つけたら、次のように入力してNginx設定をリロードします。
sudo kill -1 30251 上記のコマンドは、rootまたはsudoprivilegesを持つユーザーとして実行する必要があります。
結論#
kill コマンドは、プロセスにシグナルを送信するために使用されます。最も頻繁に使用される信号はSIGKILLです。 または-9 、指定されたプロセスを終了します。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。