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_NUMBER
kill -SIGHUP PID_NUMBER
kill -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
、指定されたプロセスを終了します。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。