重要なポイント
- プロセスの強制終了は単にプロセスを強制的に終了することを意味し、プロセスが応答しなくなったり不正な動作をしたりする場合に必要になることがあります。
- Linux と macOS には、PID または名前でプロセスを終了できる kill、pkill、killall などのコマンドがあります。
- プロセスを強制終了するときは注意し、意図しない結果を避けるために正しいプロセスを終了していることを確認することが重要です。
プロセスを削除する唯一の方法がプロセスを強制終了することである場合があります。厳しい名前にもかかわらず、プロセスを「強制終了」することは、単に「プロセスを強制的に終了する」ことを意味します。 Linux または macOS コマンドラインからこれを行う方法は次のとおりです。
プロセスとは何ですか?
Web ブラウザなどの実行中のプログラム、デスクトップ環境に関連付けられたバックグラウンド プロセス、Linux システム サービスはすべてプロセスです。
プロセスを 2 つのグループに分類できます。
- フォアグラウンド プロセス は、ユーザーによって開始または起動されたプロセスです。これらは端末ウィンドウ内にある場合もあれば、グラフィカル アプリケーションである場合もあります。
- バックグラウンド プロセスは 、自動的に開始され、ユーザーとの対話を行わないすべてのプロセスです。ユーザーからの入力を期待したり、結果や出力をユーザーに提示したりすることはありません。バックグラウンドプロセスはサービスやデーモンのようなものです。
前景プロセスが劇場のスタッフと俳優の表側のプロセスである場合、バックグラウンドプロセスは舞台裏の「舞台裏」チームです。
プロセスが誤動作したり誤動作したりすると、CPU 時間を過剰に消費したり、RAM を消費したり、タイトな計算ループに入って応答しなくなる可能性があります。グラフィカル アプリケーションはマウスのクリックに応答しない場合があります。ターミナル アプリケーションはコマンド プロンプトに戻らない場合があります。
プロセスを強制終了すると何が行われるのでしょうか?
プロセスを「強制終了」することは、単に「プロセスを強制的に終了する」ことを意味します。これは、プロセスが応答を拒否している場合に必要になる場合があります。
Linux には、まさにそれを実行できる
kill
、
pkill
、および
killall
コマンドが用意されています。これらのコマンドは、グラフィカルまたはコマンド ライン、フォアグラウンドまたはバックグラウンドなど、あらゆる種類のプロセスで使用できます。
キルコマンド
kill
使用するには、終了するプロセスのプロセス ID (PID) を知っている必要があります。
ps
コマンドを使用して、プロセスの PID を見つけることができます。
ps
にすべてのプロセスを検索させるには、
-e
(すべてのプロセス) オプションを使用します。出力のパイプは
less
ことをお勧めしますが、かなりの量が存在することになります。
ps
、スペース、
-e
、スペース、
|
と入力します。 (パイプ文字)、もう 1 つのスペースを入力してから、
less
と入力します。 Enter を押してコマンドを実行します。
ps -e |少ない
これにより、以下のスクリーンショットのようなプロセスのリストが表示されます。
/
キーを使用すると
less
で前方検索でき、
?
キーを使用すると後方検索できます。鍵。
関心のあるプロセスを特定するには、
ps
からの出力を
grep
にパイプし、プロセスの名前 (または名前の一部) を指定します。
ps -e | grepシャッター
終了したいプロセスの PID を見つけたら、それをパラメータとして
kill
コマンドに渡します。前のコマンドで特定された
shutter
プロセスを終了するには、次のコマンドを使用します。
2099を殺す
kill
コマンドは沈黙の暗殺者です。成功してもフィードバックはありません。
macOS 上のプロセスを強制終了する 場合も同様に機能します。
pkill コマンド
pkill
コマンドを使用すると、名前を指定してプロセス (複数可) を強制終了できます。 PID でプロセスを識別する必要はありません。
pkill
を使用するには、
pkill
実行中のプロセスのリストと照合するために使用する検索語を指定します。マッチング処理が終了します。したがって、検索語のスペルが正しいことを確信する必要があります。
セーフティ ネットとして、
pkill
コマンドを使用する前に
pgrep
コマンドを使用できます。
pgrep
コマンドは検索語も受け入れます。検索用語に一致する各プロセスの PID がリストされます。
pgrep
プロセスに強制終了シグナルを発行しないため、また、検索語を間違って入力した場合でも、誤って別のプロセスを強制終了することがないため、これは安全です。検索語を
pkill
に渡す前に、検索語が正しく考えられていることを確認できます。
pkill
と
pgrep
どちらも検索語を同じように扱います。これらの処理は非常に似ているため、
同じマニュアル ページを共有します
。
名前に「subq」を含むプロセスがあるとします。
ps -u dave | grep
使用します。カーテンの後ろを覗くには
ps -u dave | grep
コマンドを使用します。 「subq」がそのプロセスとそのプロセスのみに一致することがわかります。これは、プロセスの完全な名前を確認できるようにするためだけです。
ps -u デイブ | grep サブク
ユーザーがそれを行っていないと仮定しましょう。彼らが知っているのは、プロセス名に部分文字列「subq」が含まれていることだけです。
pgrep
を使用して、検索語に一致するものが 1 つだけであることを確認します。次に、その検索語を
pkill
とともに使用します。
pgrep サブク
pkill サブク
pkill
を使用すると、複数のプロセスを一度に強制終了できます。ここでユーザーは
pgrep
を実行して、Chrome が起動したプロセスの数を確認します。彼らは
pkill
を使って全員を殺します。次に、それらがすべて削除されたことを
pgrep
で確認します。
pgrepクロム
pkillクロム
pgrepクロム
同じ名前の複数のプロセスが実行されているが、すべてを強制終了したくない場合は、
-f
(コマンド ライン) オプションを指定して
pgrep
を使用すると、どのプロセスがどれであるかを識別できます。簡単な例としては、2 つの
ping
プロセスが挙げられます。どちらかを殺したいが、もう一方は殺したくない。コマンド ラインを使用してそれらを区別できます。コマンドラインパラメータを囲むために引用符を使用していることに注意してください。
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
killall コマンド
警告
: Solaris および OpenIndiana オペレーティング システムでは、
killall
コマンドは、自分に属するすべてのプロセスを強制終了します。 root である場合、または
sudo killall
を発行している場合は、コンピュータを再起動します。この記事の調査中に、この動作は OpenIndiana Hipster 2018.10 の最新バージョンで確認されました。
killall
コマンドは
pkill
コマンドと
同様に動作します
が、特定の違いがあります。検索語をコマンドに渡す代わりに、正確なプロセス名を指定する必要があります。
プロセス名に部分一致を指定することはできません。次に示すように、プロセス名全体を指定する必要があります。
キオールシャット
キオールシャッター
-y
(より若い) オプションを使用すると、指定した期間未満実行されているプロセスを強制終了できます。期間は数値で指定され、その後に次のいずれかの単位が続きます。
- s(秒)
- m(分)
- h(時間)
- d (日)
- w(週)
- M (月、音符、大文字の「M」)
- y (年)
起動したばかりの
ana
というプロセスを強制終了し、
ana
の古いインスタンスを実行したままにするには、2 分以内に反応した場合は、
killall
で次のパラメータを使用できます。
killall -y 2m アナ
-o
(より古い) オプションを使用すると、指定した期間を超えて実行されているプロセスを強制終了できます。このコマンドは、1 日以上実行されているすべての
ssh
接続を強制終了します。
killall -o 1d sshd
任意のプロセスを強制終了できますか?
これらのコマンドを使用すると、誤ったプロセスを正確かつ安全に特定し、正しく終了できます。ただし、トリガー ハッピーになり すぎ て、終了すべきではないプロセスを終了してしまう可能性は十分にあります。
常に注意してください。まず、強制終了しようとしているプロセスが本当に必要なものであることを確認してください。次に、再確認します。注意深く、対象のプロセスが終了したいプロセスであることを確認してください。満足したら、プロセスの終了に進みます。
プロセスを誤って終了してしまったら、それで終わりではありません。最も可能性の高い結果は、何かバグが発生して PC を再起動しなければならないことです。そうしないと、終了したプロセスに関連付けられたプログラムで行った作業が失われる可能性があります。





