GNU/Linux >> Linux の 問題 >  >> Linux

Linuxプロセスを強制終了または終了する方法:究極のガイド

LinuxやBSDなどのマルチプロセッシングオペレーティングシステムは、CPU使用率を最大化するためにいくつかの方法を採用しています。プロセスは単に実行中のプログラムです。一度に複数のLinuxプロセスが実行されるため、Linuxでのプロセス管理は非常に重要です。多くの場合、ユーザーは、実行するプログラムが多すぎると、CPUリソースの調整などの問題に直面します。このような状況は、CPUが増え続けるプロセスを処理できない場合に発生します。これはCPUの能力に完全に依存するわけではありませんが、ハングしたプロセスやゾンビプロセスを処理することは非常に苛立たしいことです。このような事態を軽減するために、これらのプロセスを強制終了するいくつかの標準的な方法の概要を説明します。

Linuxでの応答しないプロセス管理のマスター

まったく応答しないLinuxプロセスを終了するいくつかの方法を学びます。 Windowsを使用している場合は、Ctrl + Alt+Deleteに精通している可能性があります。同様に、Macユーザーには、フリーズしたプロセスを強制終了するCommand + Option+Escapeメソッドがあります。 Linuxは、対応するものよりもはるかに用途が広く、デッド/応答しないプロセスに取り組むための複数の方法を提供します。

死んだLinuxプロセスを強制終了するさまざまな方法

主にゾンビプロセスを殺すための2つの方法の概要を説明します。最初の方法にはLinuxターミナルを使用します。このためには、最初にプロセスIDを特定する必要があります。正常に取得されると、このPIDを使用して、特定のシグナルをそのPIDに送信することにより、プログラムを強制終了できます。

また、グラフィカルユーザーインターフェイスまたはXウィンドウからこのようなLinuxキルジョブを実行する方法についても学習します。 「システムモニター」を活用します このためにUbuntuで利用可能なアプリケーション。これはGNOMEアプリケーションですが、他のLinuxデスクトップ環境でも同様のツールを利用できます。

コマンドラインから応答しないプロセスを終了する

kill など、コマンドラインから応答しないプロセスやハングしたプロセスを終了するためのツールがいくつかあります。 、スキル 、および killall 。これらのコマンドは、これらの応答しないプロセスに特定の信号を送信することによって機能します。プロセスIDまたはPIDが必要になります 必要な終了信号を送信できるようにするための情報。

PIDまたはプロセスIDは、プロセスを識別する一意の番号です。これらは実行時にLinuxカーネルによって作成され、プロセススケジューラがCPUアクティビティを制御します。したがって、アプリケーションを呼び出すたびに、カーネルは最初に必要なプロセスを生成し、それらにこれらの一意のPID値を割り当てます。プロセスに関連付けられた複数のPIDが存在する可能性があります。さらに、各プロセスには、一意のPPID(親プロセスID)を持つ単一の親プロセスがあります。

したがって、このPPIDを見つけることができれば、この目的のために設計されたプログラムを使用してキルシグナルを送信できます。以下では、Linuxで実行中のプロセスを確認し、ターミナルからPPIDを特定する方法を学習します。

PPID情報を確認する

---

pidof などのLinuxのいくつかのプロセス管理コマンドを使用して、プロセスのPPIDを確認できます。 、 pstree 、および pgrep 。それらを1つずつ調べて、LinuxプロセスのPIDを取得する方法を見てみましょう。

方法1:psコマンドを使用する

Linuxのpsコマンドは、実行中のすべてのプロセスを、ターミナルのPIDなどの他のプロセス関連情報とともに表示します。このコマンドを使用してすべてのプロセスを一覧表示し、Linuxgrepコマンドを使用して特定のプロセスを除外できます。関心のあるプロセスID情報が表示されます。

 $ nano> / dev / null&
 $ ps aux | grep "nano" 

まず、バックグラウンドでLinuxテキストエディタを呼び出しました。次に、grepコマンドと一緒にpsコマンドを使用して、このエディターのPPIDを確認しました。出力には複数のプロセスIDが含まれる場合がありますが、最初のプロセスIDのみに関心があります。これはPPIDであるためです。以下に示すように、Linuxawkコマンドを使用してこの情報を見つけることもできます。

 $ ps aux | awk'/ nano / {print $ 2}' 

このコマンドは、無関係な情報をすべて抑制するため、より柔軟です。探しているPPID情報のみが表示されます。

方法2:pstreeコマンドを使用する

pstreeコマンドは、実行中のすべてのプロセスのツリーのようなビューを提供します。ターミナルウィンドウからLinuxタスクリストのグラフィカルビューを提供します。このコマンドを使用して、プロセスのPPIDおよびすべてのPID情報を表示できます。特定のプロセスのPPIDを見つけるためにpstreeを活用する方法については、以下の例を確認してください。

 $ nano> / dev / null&
 $ pstree -p | grep'nano' $ pstree -p | awk'/ nano / {print $ NF}' 

まず、最初のコマンドを使用して、バックグラウンドでプロセスを生成しました。次に、2番目のコマンドは、Linuxでgrepコマンドを使用して、このプロセスのPPIDを取得します。最後に、3番目のコマンドは、awkコマンドを使用してこの値を取得する方法を示しています。

方法3:pgrepコマンドを使用する

pgrepコマンドは、Linuxで最も簡単なプロセス管理コマンドの1つです。実行中のすべてのプロセスのリストをチェックし、特定のプロセスのPPIDを標準出力またはこの場合は端末に出力します。正規表現のマッチングを実行することで機能し、Linuxシェルスクリプトの記述に非常に適しています。

 $ nano> / dev / null&
 $ pgrep'nano' 

前の例と同様に、nanoプロセスを生成しました。次に、pgrepコマンドを使用してPPIDを取得しました。この値を取得すると、Linuxの強制終了ジョブを非常に簡単に実行できます。

方法4:pidofコマンドを使用する

pidofコマンドは、LinuxプロセスのPPIDを判別するためのもう1つの簡単ですが便利な方法です。 PPIDとプロセスに関連付けられている他のすべてのPIDの両方が表示されます。以下の調査をチェックして、これを実際に使用する方法を確認してください。

 $ nano> / dev / null&
 $ pidof nano $ pidof -s nano 

pidofコマンドを使用してLinuxで実行中のプロセスを確認すると、多くの場合、複数のPIDが表示されます。通常、このような場合、最初または最後の番号は、昇順か降順かに応じてPPIDになります。 -sを使用できます これを軽減するためのpidofのオプション。 PPID値のみが表示されます。

方法5:最上位のコマンドを使用する

topコマンドは、Unixライクなオペレーティングシステムで実行されているすべてのプロセスのリアルタイムビューを提供します。これを使用して、ターミナルにLinuxタスクリストを表示し、特定のプロセスのPID情報を見つけることができます。

 $ top 

次のコマンドを使用して、topコマンドの出力から特定のプロセスのPPIDを取得します。

 $ nano> / dev / null&
 $ top -n1 -b | grep'nano' $ top -n1 -b | awk'/ nano / {print $ 1}' 

topは静的データを端末にダンプする代わりにリアルタイム出力を提供するため、 -n1を使用しました および-b 静的出力を出力するオプション。次に、Linuxでgrepコマンドまたはawkコマンドを使用してPPID情報を取得できます。

応答しないLinuxプロセスを強制終了します

上記の方法のいずれかを使用して、応答しないプロセスのPPIDを取得できます。これを取得したら、プロセスを完全に終了します。 kill など、これを可能にするコマンドがいくつかあります。 、スキル 、および killall 。次のセクションで、それらがどのように機能するかを1つずつ見ていきます。

方法1:killコマンドを使用する

killコマンドは、その単純さと堅牢なアクションにより、Linux管理者によって広く使用されています。プロセスのPIDとシグナルを受け取ります。カーネルは、このシグナルに基づいてプロセスの実行を強制終了/停止します。次のコマンドを使用して、killコマンドで使用可能なすべてのシグナルを表示できます。

 $ kill -l <​​/ pre> 

ご覧のとおり、killは64の異なるシグナルを提供します。ただし、このガイドではそのうちの2つについてのみ説明します。これらはシグナル9(SIGKILL)とシグナル15(SIGTERM)です。 SIGTERMまたはシグナル15は、応答しないプロセスを強制終了する安全な方法です。一方、SIGKILLまたはシグナル9は、Linuxプロセスを強制的に強制終了します。

 $ kill -9 8631 $ kill -KILL 8631 

上記のコマンドは同等であり、PID 8631を持つプロセスを強制的に強制終了します。これは、私のシステムのプロセス「nano」のPPIDです。これを、システム内の応答しないプロセスのPIDに置き換えます。

 $ kill -15 8631 $ kill -TERM 8631 

上記のコマンドも同等であり、プロセスを正常に強制終了します。そのため、プロセスが強制終了されるまでに時間がかかる場合があります。さらに、 sudoを追加する必要がある場合があります プロセスが別のユーザーによって所有されている場合は、killコマンドの前。

方法2:pkillコマンドを使用する

pkillコマンドは、Linuxで最も用途の広いプロセス管理コマンドの1つです。これにより、名前、PID、所有者、およびその他のランタイム属性に基づいて、応答しないプロセスを強制終了できます。これは、初心者のユーザーや、多くの標準的な端末コマンドに慣れていない人に最適なツールです。

 $ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano 

Linuxでゾンビ/応答しないプロセスを強制終了するには、上記のpkillコマンドのいずれかを使用できます。 -eを使用します Linuxの強制終了ジョブの確認が必要な場合のオプション。 pkillコマンドを使用すると、ユーザーは特定の終了信号を送信することもできます。

方法3:killallコマンドを使用する

killallコマンドを使用すると、ユーザーは名前に基づいて応答しないプロセスを強制終了できます。使い方は簡単ですが、注意しないと問題が発生する可能性があります。 killallは名前に基づいてプロセスを終了するため、偶然にプロセスを強制終了する可能性が常にあります。たとえば、システムで利用可能なnanoのバージョンが異なる場合、最初の例ではそれらすべてが強制終了されます。

 $ killall nano $ killall --verbose nano $ killall --interactive nano $ killall --signal KILL nano 

最初の例は、Linuxでのkillallコマンドの基本的な使用法を示しています。 2番目のコマンドは、強制終了ジョブが成功したかどうかを報告し、3番目のコマンドは、プロセスを強制終了する前にユーザーに確認を求めます。デフォルトでは、killallはプロセスを強制終了するためにSIGTERMシグナルを使用します。ただし、最後の例に示すように、信号を手動で指定できます。

方法4:便利なワンライナーを使用する

Linuxの真の美しさは、ユーザーがニーズに基づいて高度なコマンドの組み合わせを作成できることです。これを実証するために、このセクションでいくつかのワンライナーの概要を説明しました。

 $ nano> / dev / null&
 $ kill -9 $(pgrep nano)$ ps aux | grep -e'nano' | awk'{print $ 2}' | xargs kill -9 

最初の例では、シェル補間を使用して、プロセス「nano」のPIDをLinuxのkillコマンドに渡しました。 2番目の例では、いくつかの日常的なターミナルコマンドとI / Oリダイレクトを使用して、プロセスを強制終了します。 Linuxターミナルに慣れたら、自分の気の利いたワンライナーをキュレートできます。

方法5:Linuxシェルスクリプトを使用して複数のプロセスを強制終了する

ユーザーが複数のプロセスを終了したい場合があります。簡単なシェルスクリプトを書くことで、このようなタスクを簡単に自動化できます。このトピックに興味がある場合は、Linuxシェルスクリプトに関する以前のガイドを確認してください。次のスクリプトは、強制終了するプロセスのPPIDを取得し、強制終了シグナルを使用してそれらを終了します。

 $ nano proc-killer.sh 
#!/ usr / bin / env bashfor pro in "[email protected]" do pid =$(pgrep $ pro | head -1)echo $ pid comm ="kill -9 $ pid" eval $ commdone 

次に、このファイルを保存し、以下のコマンドを発行して実行権限を追加します。

 $ chmod + x proc-killer.sh 

これで、このスクリプトに、終了するプロセスの名前を渡すことができます。

 $ ./proc-killer.sh nano gedit vlc 

引数を、システム内の応答しないLinuxプロセスの名前に置き換えるだけです。

GUIから応答しないプロセスを終了する

グラフィカルユーザーインターフェイスまたはXウィンドウから応答しないプロセスを終了することもできます。次のセクションでは、これを行うための2つの方法について説明します。

方法1:xkillアプリケーションを使用する

最新のLinuxディストリビューションは、Xグラフィカルウィンドウを利用して、ユーザーにエレガントなグラフィカルエクスペリエンスを提供します。ユーザーが応答しないGUIウィンドウを閉じることができるxkillと呼ばれるシンプルなツールがあります。 Linuxでは、アプリケーションのタイトルウィンドウがアプリケーション自体とは別のものであるため、これが可能です。

Linuxターミナルエミュレータに移動して、xkillと入力するだけです。マウスカーソルをXボタンに変換し、GUIウィンドウを強制終了するために使用できます。

 $ xkill 

これで、応答しないアプリケーションのウィンドウバーをクリックするだけで、アプリケーションが強制終了され、すぐに消えます。

方法2:Ubuntuでシステムモニターアプリケーションを使用する

ほとんどの主流のLinuxディストリビューションには、ユーザーがハングしたLinuxプロセスをグラフィカルに終了できるようにするある種のGUI監視ツールが付属しています。たとえば、Ubuntuのシステムモニターアプリケーションを使用すると、応答しないプロセスを直感的に終了できます。プロセスリストからデッドプロセスを選択し、プロセスを右クリックして強制終了オプションを選択するだけで、プロセスを強制終了できます。

このアプリケーションには他にも多くの選択肢があり、ディストリビューションまたはデスクトップ環境に適したものを簡単に見つけることができると確信しています。

終わりの考え

Linuxのプロセス管理は非常に用途が広いため、ユーザーは応答のないプロセスを処理するときにイライラすることがよくあります。そのため、このガイドでは、編集者が死んだLinuxプロセスを終了するためのすべての可能な方法を概説しています。これを読んだ後、コマンドラインまたはGUIのいずれかから応答しないプロセスを強制終了できるはずです。また、このような迷惑行為を最短時間で処理するために、当社のワンライナーコマンドを使用することもできます。さらに、単純なシェルスクリプトを使用して、複数の単一プロセスを強制終了することもできます。うまくいけば、あなたは私たちのガイドからあなたが求めていた情報を入手したでしょう。


Linux
  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linux – Linuxでプロセスのプロセッサ親和性を設定するにはどうすればよいですか?

  3. Linux の特定のポートで実行されているプロセスを強制終了するには?

  1. Linuxでゾンビプロセスを見つけて殺す方法

  2. 応答しないLinuxシステムで最大のプロセスを強制終了する方法

  3. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  1. Linuxでプロセスを強制終了する方法またはプログラムを停止する方法

  2. nohupプロセスを強制終了するプロセスIDを取得するには?

  3. Linux でプロセスを一時停止/再開する方法