オペレーティングシステムには、ユーザーまたはOS自体(システムサービス システム上で実行されているこのようなプログラムは、”プロセス”と呼ばれています。 通常、プロセスは、タスクが完了したとき、またはキーボードショートカットを押すか、”閉じる”ボタンをクリックして終了するように依頼したときに、単独で終しかし、プロセスがハングアップしたり、大量のCPUやRAMを消費したりすることがあります。
しかし、時には、CPUやRAMを大量に消費することがあります。 このような状況では、プロセスを手動で「強制終了」する必要があります。 この記事では、Linuxシステム上のプロセスを強制終了するために使用できるさまざまなツールを見ていきます。
殺すためにプロセスを見つける
プロセスを殺すためには、最初にプロセスの詳細を見つける必要があります。 これを行うには、top
ps
pidof
pgrep
の三つのコマンドを使用します。 状況に応じて、この目的のためにこれらのコマンドのいずれかを使用できます。この記事の後半で説明するように、プロセス名またはプロセスID(PID)でプロセスを強制終了することができます。 PIDは、プロセスを一意に識別する番号です。 プロセスIDによる強制終了は、特定のプロセスのみを強制終了する場合に便利です。 一方、特定のプログラムの実行中のすべてのインスタンスを強制終了する場合は、プロセス名による強制終了が便利です。
topコマンドを使用してプロセスを見つける
最初にtop
コマンドを見ていきます。 次のように入力してtopコマンドを起動します。
top
以下に示すように、対話型インターフェイスが表示されます。 このリストを参照して、強制終了するプロセスの名前またはPIDを見つけることができます。
左端の列にはプロセスのPIDが含まれ、右側にはプログラム名が含まれています。 例として、上記のスクリーンショットでは、プロセスIDが263で実行されているvnstatd
プロセスがあります。
psおよびgrepコマンドを使用してプロセスを検索する
プロセスのリストを取得する別の方法は、次のように実行することです。
ps aux
上記のコマンドでは、フラグaux
次の意味を持つ
a
a
a
a
a
a
a
:すべてのユーザーのプロセスを表示u
:プロセスを使用しているユーザーを表示x
ps
はGUI環境で実行されているプロセスを表示しません。コマンドの出力は、top
の出力と似ています。 PIDは左から2番目の列にあり、プロセス名は右端の列にあります。p>を使用する利点は、
grep
コマンドでこのリストを簡単にフィルタリングできることです。 たとえば、”vnstat”という用語に関連付けられたプロセスを検索するには、次のように使用できます。ps aux | grep -i vnstat
プロセス、および
grep
プロセス。 “Vnstat”という用語のすべてのインスタンスを検索していて、”vnstat”を引数としてgrep
grep
が得られました。したがって、”vnstat”関連のプロセスが実行されていない場合でも、grep
process:top
ps
grep
pidof
を使用してPIDを見つけることができます。p>pidof
を使用するのは非常に簡単です。 正確な名前が”nginx”のプロセスのPidを取得するには、次のようにします。pidof nginx
正確な名前が”nginx”のプロセスがある場合は、以下に示すようにPidのリス 何もない場合は、出力として何も得られません。pidofコマンド
フルネームがわからない場合は、
pidof
pgrep
を使用できます。 例として、名前のどこかに”ngin”を含むすべてのプロセスを検索するには、次のように実行します。pgrep ngin
これは、”nginx”という正確な名前のプロセ 私たちのシステムでは、上のスクリーンショットで”nginx”に属していたすべてのPidが表示されていることに注意してください。
pidof
pkill
top
ps
の出力には、プロセスを本当に強制終了できるかどうかを判断するのに役立つ追加情報が含まれています。どのプロセスを殺すことができますか?プロセスを見つけたので、それを殺す時が来ました。
これでプロセスを見つけました。 しかし、その方法を学ぶ前に、あなたが知る必要があるいくつかのことがあります。
あなたが通常のユーザーであれば、あなた自身のプロセスを殺すことはできますが、他のユーザーに属するプロセスは殺すことはできません。
top
ps
top
ps aux
では、最初の列にユーザー名が含まれています。しかし、rootユーザーはすべてのプロセスを強制終了することができます。 コマンドの前に
sudo
を追加してrootとして実行するか、su
と入力してルートシェルを取得し、コマンドを実行します。Linuxでは、プロセスが強制終了されると、「終了シグナル」がプロセスに配信されます。 多くの異なるタイプの信号がありますが、私たちは主に”SIGTERM”と”SIGKILL”信号を扱います。 それらの数値はそれぞれ15と9です。 デフォルトでは、すべてのプロセス強制終了コマンドは”SIGTERM”を使用し、プログラムが終了する前にコードを実行できるようにするため、”正常に”終了できま 強制的にプロセスを終了したい場合は、代わりに”SIGKILL”を使用できます。Linuxカーネルは、プロセスの状態に関連するいくつかの情報を保持します。 プロセスが終了すると、カーネルは親プロセスが子プロセスがそのタスクを完了できたかどうか、そしてそれ自体で終了したかどうかを知ることがで 親がそうするまで、これらの”ゾンビ”プロセスはプロセスのリストに表示されます。 このようなプロセスは、すべてのプロセスのリストのエントリであり、実際のプロセスが関連付けられていないため、強制終了することはできません。
プロセスが入出力操作(ディスクからの読み取りや書き込みなど)を実行すると、”無停電スリープ”状態にあると言われます。 プロセスがこの状態にある間は、プロセスを強制終了することはできません。
top
ps
出力の8番目の列を見ることで、プロセスが「ゾンビ」(Z)または「無停電スリープ」(D)状態にあるかどプロセスを強制終了するために使用できるさまざまなコマンドがあります—kill
killall
pkill
top
killall
コマンド。killallコマンドでプロセスを強制終了
killall
コマンドは、プロセスを強制終了する最も簡単な方法の1つです。 プロセスの正確な名前を知っていて、別のユーザーとして実行されておらず、ZまたはDの状態ではないことがわかっている場合は、このコマンドを直接使たとえば、”firefox”という名前のプロセスを強制終了するには、次のように実行します。killall firefox
SIGKILLでプロセスを強制終了するには、次のように実行します。
killall firefox
SIGKILLでプロセスを強制的に強制終了するには、次のように実行します。:また、
-9
-SIGKILL
sudo
:sudo killall firefox
:
sudo killall firefox
:
sudo killall firefox
:
sudo killall firefox
:
sudo
:sudo
:sudo
:sudo
:また、-o
-y
フラグを使用して、一定期間実行されているプロセスを強制終了することもできます。 したがって、30分以上実行されているプロセスを強制終了したい場合は、次のように使用します。killall -o 30m <process-name>
30分未満実行されているプロセ:
s seconds m minutes h hours d days w weeks M months y years Killing processes with the pkill command
Sometimes, you only know part of a program’s name.
pgrep
pkill
apache
という名前を含むすべてのプロセスを強制終了したい場合は、次のように実行します。pkill apache
SIGTERMの代わりにSIGKILLを使用したい場合は、次のように使用します。
pkill -9 apache
再び、
pkill -9 apache
再び、
pkill -9 apache
再び、
pkill -9 apache
再び、
pkill -9 apache
再び、
pkill -9 apache
-SIGKILL
の代わりに-9
。killコマンドを使用したプロセスの強制終了
killコマンドを使用するのは簡単です。 終了したいプロセスのPIDがわかったら、
kill
コマンドを使用して終了できます。 たとえば、PIDが1234のプロセスを強制終了したい場合は、次のコマンドを使用します。kill 1234
前述のように、デフォルトではSIGTERMを使用します。 SIGKILLを使用するには、
-9
-SIGKILL
前に見たように:kill -9 1234
topコマンドでプロセスを強制終了
top
-SIGKILL
kill -9 1234
topコマンドでプロセスを強制終了する
top
top
div>コマンド。 まず、強制終了したいプロセスを検索し、PIDをメモします。 次に、topの実行中に
k
を押します(これは大文字と小文字が区別されます)。 強制終了するプロセスのPIDを入力するように求められます。PIDを入力したら、enterキーを押します。
PIDを入力した後、enterキーを押します。
PIDを入力した後、enterキーを押します。
PIDを入力した後、enterキーを押します。
PIDを入力した これで、プロセスを強制終了するためにどの信号を使用するかを尋ねます。 SIGTERM(15)を使用する場合は、デフォルトの信号であるため、enterキーを押します。 SIGKILL(9)を使用する場合は、9と入力してenterキーを押します。
プロセスIDを空白のままにしてenterを直接押すと、リストの最上位のプロセスが終了します。 あなたは、矢印キーを使用してスクロールし、このように殺すためにしたいプロセスを変更することができます。
結論
この記事では、Linuxでプロセスを強制終了するさまざまな方法を見ました。 これらのコマンドを学習することは、適切なシステム管理と管理のために不可欠です。 これらのコマンドの詳細を調べたい場合は、それぞれのmanページを見てください。この投稿が好きなら、それを共有してください🙂