Linux プロセスを強制終了する方法。 #1 の簡単な解決策を試みます

09.11.2020

今日はその方法についてお話します Ubuntu Linuxスタックして終了できないプロセスに対処します。 システムをロードすることでシステム リソースを食い荒らし、かなりの部分を食い荒らします。 ラム、これにより、コンピュータの速度が低下したり、システムが短時間部分的にフリーズしたりするなどの問題が発生します。 さまざまな状況があり、デスクトップがフリーズする場合もあれば、アプリケーションがフリーズする場合もあり、デスクトップ環境がフリーズする場合もあります。このような状況では、システムを再起動したり、コンピュータの電源を切らずに解決する方法を探すことになります。ボタン システムユニットこれは良い解決策ではないため、コンピューターにアクセスしてください。

Ubuntu Linux ではプロセスを強制終了する必要がある場合があります。それを正しく実行し、害を及ぼさないようにする方法については、コンソール ソリューションとグラフィカル インターフェイスの両方を使用したソリューションについて説明します。

今日は、Ubuntu Linux のプロセスがフリーズして終了できない場合の対処方法について説明します。 これらはシステムをロードすることでシステム リソースを食い荒らし、RAM のかなりの部分を消費し、コンピュータの速度低下やシステムの短時間の部分的なフリーズなどの問題を引き起こします。 さまざまな状況があり、デスクトップがフリーズする場合もあれば、アプリケーションがフリーズする場合もあり、デスクトップ環境がフリーズする場合もあります。これらの状況から、システムを再起動せずにコンピュータの電源を切らずに解決する方法を探します。これは良い解決策ではないため、コンピュータのシステムユニットのボタンを押してください。

Ubuntu Linux を使用する場合、おそらくすでに次のような疑問を抱いているでしょう。

その後プロセス/アプリケーションを強制終了するために PID を特定する方法

コマンドを実行したくない場合は、 トップまたは別のより強力なアナログ hトップ、その後、このプロセス ID またはそのプロセス ID の ID をわざわざ検索してみてください。もっと簡単な方法や解決策があります。 PIDプロセスでは、コマンド「」を使用できます。 ピドフ" または " PS".

アプリケーションのプロセス ID を確認する必要があるとします。 Google Chromeこの状況で行うことは、ターミナル Ctrl + Alt + T を開き、ターミナルでコマンドを実行することです。

ピドフクロム

出力が得られます。

9497 9183 9123 8815 8788 6042 6033 5938 5916 5911 5908 5900 5892 5836 5831 5819

ほぼ準備が整いました。PID を特定しました。プロセスを強制終了する方法については以下をお読みください。

Linux で PID によってプロセスを強制終了する方法

上で説明したものから、どの PID がアプリケーション内にあるかを特定しました。上で説明したものから、ブラウザで多くのタブが実行されており、さらに個々のブラウザ プロセスが実行されていることがわかります。すべてを強制終了するには、合計 16 の ID があります。 、次のコマンドを実行します。

須藤キル 9497 9183 9123 8815 8788 6042 6033 5938 5916 5911 5908 5900 5892 5836 5831 5819

次のコマンドを実行して、システム内のすべてのアクティブなプロセスを表示することもできます。

須藤 ps axu

はい、とても簡単です。 Chrome の代わりに、Skype などの他のアプリケーションを使用することもできます。

追加のコマンドを使用して、強制終了するアプリケーションのプロセス ID を検出することもできます。

追記 | grep -i 名前-アプリ

name-app の代わりにアプリケーションの名前を書きます。フルネームを手動で入力せず、「 キー」を使用した自動検出を使用します。 タブその結果、このコマンドは必要なプロセスの稼働時間を表示し、それに応じてプロセスの稼働時間を表示します。 PIDこれを使用して kill することができます。ターミナルで実行してコマンドの動作を確認してみましょう。

追記 | grep -i スカイプ

次の結果が得られます。

9257? 00:00:57 スカイプ

必要なものはすべて手のひらにあり、ID があり、このプロセスの実行時間も確認できます。

Linux で Kill コマンドを使用する方法

上記で PID 識別子を取得する方法をすでに説明しました。後は、この PID を kill と組み合わせて使用​​するだけです。これにより、気に入らないプロセスが強制終了されます。詳細については、もう少し下を参照してください。

ID を受け取ったので、アプリケーションを強制終了できます。

須藤殺し9257

以上で、アプリケーションは強制終了されます。

Linux でプロセスを名前で強制終了する方法

プロセスを名前で強制終了するには、次のように使用できます キルオールコマンド, まず最初に、このコマンドは同じ名前を持つすべてのプロセスを強制終了することを理解する必要があります。 この状況では、必要なプロセスの PID を探す必要がないため、これは非常に便利です。たとえば、プロセスを閉じたい場合などです。 スカイプアプリ、ターミナルでコマンドを実行します。

須藤キオールスカイプ

オプションもあります:

Sudo killall -s 9 スカイプ

アプリケーションが動作を停止すると同時に、気に入らないプロセスを簡単に強制終了できます。

デスコマンド、ターミナルでやってはいけないこと

私は以前、システムを停止させないためにターミナルでどのコマンドを実行すべきではないかという悪いアドバイスに関する記事を書きましたが、このリストは完璧ではなく、さらに多くのコマンドで補足することができます。そのうちの 1 つを以下に示します。

以下は death コマンドの例です。

須藤キル -9 -1

このコマンドは、現在実行中のすべてのプロセスを強制終了します。 これを行うことはお勧めしません。結果は予測できない可能性があり、グラフィカル インターフェイスを使用せずにシステムを再起動する必要が生じる可能性が高いからです。 グラフィカル インターフェイスが突然失敗した場合は、次のコマンドを使用してターミナルを開きます。 CTRL+ALT+F1、それぞれの新しいウィンドウは、F1 を F2 に変更するだけで同じように開きます。

次のコマンドを実行して、ターミナルから上記で使用したコマンドのヘルプを表示することもできます。

男 ps 男 grep 男 pidof 男 kill 男 killall

これで私たちの短い資料は終わりました。何か理解できない場合は、以下の資料へのコメントで質問してください。

それはともかく、一部のアプリケーションでは、 Linux時々彼らは凍ります。 同時に、アプリケーションがまったく応答しないか、動作が非常に遅くなり、作業を正しく終了できない場合があります。 結果として生じる状況からすぐに抜け出すには、このプロセスを「強制終了」します。 これを行うには、次のコマンドを使用します 殺すそして キオール。 ここで、これらのコマンドの使用方法、プロセスの PID の検索方法、および SIGKILL シグナルの送信方法を説明します。

混乱を避けるために、プロセスとはシステムに起動されるプログラムを意味することに同意しましょう。 たとえば、複数のブラウザ ウィンドウを実行している場合、 モジラ Firefox- これは 3 つのプロセスが実行されていることを意味します。

プロセスの PID を確認する - pidof コマンド

PID— システム内の一意のプロセス識別子 Linux。 プロセスを正しく停止するには、まずその PID を確認する必要があります。 これを行うには、ps および grep コマンドを使用します。 順番に psコマンドは、システム内のアクティブなプロセスのリストとそれらに関する情報を表示するように設計されています。 grepコマンド ps と同時に (チャネル内で) 実行され、ps コマンドの結果を検索します。 コマンドラインで実行すると、すべてのプロセスを一覧表示できます。

もちろん、PID は以下を使用して決定することもできます。 トップ。 ただし、ほとんどの場合、プロセスの数が多すぎるため (プロセスの数が動的に変化するため)、PID を迅速かつ正確に決定するのはそれほど簡単ではありません。 これはまさに grep コマンドが使用される目的です。 たとえば、プロセスを終了するには Googleブラウザ Chrome では次のコマンドを実行する必要があります。

追伸 | grepクロム

$ ps axu | grepクロム
itechf2 20474 2.7 1.5 938416 120136 tty2 Sl+ 11:07 0:00 /opt/google/chrome/chrome

この場合、20474 が目的の PID です。 より簡単な方法は、コマンドを使用することです ピドフ、プロセス名を指定する必要があります。 例えば:

$pidofchrome
20728 20706 20668 20647 20586 20574 20553 20508 20474

Linux でプロセスを終了する - kill および killall コマンド

でプロセスを終了します オペレーティング·システム Linux PID がわかっている場合は、次のコマンドを使用できます。 殺す。 知って理解する価値があります。kill コマンドはプロセスにシグナルを送信するように設計されています。 デフォルトでは、送信するシグナルを指定しない場合、SIGTERM シグナル (単語終端から) が送信されます。 SIGTERM はプロセスを終了するように指示します。 各信号には独自の番号が付いています。 SIGTERM には 15 という番号が付けられています。kill コマンドが送信できるすべてのシグナル (およびその番号) のリストは、次のコマンドを実行して取得できます。 殺す -l 。 SIGKILL シグナル (番号 9) をプロセス 2811 に送信するには、コマンド ラインで次のコマンドを実行します。

同時に、SIGTERM シグナルはプロセスを停止しない場合があります (たとえば、シグナルが傍受またはブロックされた場合) が、SIGKILL は傍受または無視できないため、常にプロセスを強制終了します。

キルオールコマンド Linux では、同じ名前のすべてのプロセスを「強制終了」するように設計されています。 プロセスの PID を知る必要がないため、これは便利です。 たとえば、chrome という名前のプロセスをすべて閉じたいとします。 ターミナルで実行します:

killall コマンドは、kill と同様に、デフォルトで SIGTERM シグナルを送信します。 別の信号を送信するには、オプションを使用する必要があります -s 。 例えば:

アプリケーションに不具合が発生し、それに伴ってすべてが不具合を起こすことがあります。 作業環境もちろん、コンピューターを再起動すると保守性自体が失われますが、毎回コンピューターを再起動するという選択肢はありません。 そして、このためのチームがあります 殺すこれは、フリーズしたプロセスを停止するのに役立ちます。

チーム 殺す「シグナル」または「PID」を使用してプロセスを強制終了または終了するために使用できます。 Kill コマンドは、指定されたシグナルを送信して、不正な動作をしているアプリケーションを終了します。 シグナルが指定されていない場合は、TERM シグナルが送信されます。 この TERM シグナルは、それをキャッチしないプロセスを強制終了します。 他のプロセスの場合、このシグナルは傍受できないため、Kill シグナル (番号 9) を使用する必要がある場合があります。

SIGTERM はプロセスの停止を要求するシグナルです。 このプロセスには、作業が完了するまでしばらく時間がかかります。

SIGKILL シグナルを使用すると、プロセスを強制的に即時に終了させることができます。 また、プログラムにはこの信号を無視する権利はなく、アプリケーションを終了します。

Kill コマンドの形式は次のとおりです。

kill [ -sign | -s シグナル] pid ...

プロセスを強制終了する最も簡単な方法は、リソース PID を見つけて、その PID を引数として Kill コマンドで実行することです。

PIDとは何ですか?

実行される各 Linux または Unix プロセスまたはプログラムには、一意のプロセス識別番号 (PID) が自動的に割り当てられます。 PID は、システム内の各プロセスに番号を自動的に割り当てます。

リソースの PID は、「pidof」コマンドまたは「ps」コマンドを使用して見つけることができます。 プロセス (Firefox など) の PID を確認するには、次のコマンドを使用します。

ピドフファイアフォックス

このコマンドを別の形式で使用することもできます。

追記 | grep -i Firefox

上記の例では、Firefox プロセスの PID である「23814」という数字が表示されています。 プロセス (Firefox) の PID がわかったら、以下に示すように Kill コマンドを使用してプロセス (Firefox) を強制終了できます。

23814を殺す

コマンドが kill を実行するとき、つまり、コマンドとともに引数として PID が渡されるプロセスにシグナルを送信します。

より具体的に言うと、Kill コマンドには次の形式があります。

  • PIDを殺す
  • キル -15 PID
  • kill -9 PID
  • kill -SIGTERM PID
  • kill -SIGTERM PID

Kill コマンドには次の戻りコードがあります。

  • 0 – 成功時
  • 1 – 失敗
  • 64 – 部分的に成功しました (複数のプロセスが指定された場合)

使用できる別のコマンドは次のとおりです すべてを殺す。 Killall は、PID の代わりにプロセス名を使用し、その名前を持つプロセスのすべてのインスタンスを終了します。 たとえば、Firefox の複数のインスタンスを実行している場合、次のコマンドを使用してそれらをすべてシャットダウンできます。

キラールファイアフォックス

X サーバーの場合は、次のコマンドがあります。 エックスキル、プロセスを強制終了する可能性があります。 Xkill コマンドは、プロセス名またはその PID を渡さないグラフィカル モード用です。つまり、ターミナルで実行する場合です。

Linux はプログラムやさまざまなサービスの動作という点では Windows よりも安定していますが、何かが起こる可能性があり、場合によってはシャットダウンが必要になることがあります。 Linuxプロセス。 これは、初期化システムではなくターミナルを介してバックグラウンドでシステム サービスを起動したときにプログラムがクラッシュした場合や、システム全体を再起動することで Linux プロセスを強制終了する方が簡単な他の多くの場合に必要になることがあります。

この記事では、Linux プロセスを終了する最も一般的な方法をいくつか見ていきます。 プロセスを停止する方法と、すべてを正しく実行する方法について詳しく説明します。

手術室のプロセス管理 Linuxシステム信号を使用して実行されます。 あらゆるプロセスの完了を含みます。 信号はシステムによって送信されますが、ユーザーが特別なコマンドや端末のキーボード ショートカットを使用して送信することもできます。 プロセスが終了シグナルを受信すると、いくつかの準備ステップを実行する必要があります。

子プロセスの終了、一時ファイル、ソケットなどの削除が必要です。 ただし、状況の複雑さによっては、プロセスがすべてのシグナルに応答しない場合があります。 プロセスを完了するために使用される主な信号を見てみましょう。

  • シギント- 最も無害な終了信号は、割り込みを意味します。 Ctrl+C キーボード ショートカットを使用してターミナルから起動されたプロセスに送信されます。 プロセスはすべてのアクションを正しく完了し、制御を返します。
  • シグクイット -これは、キーボード ショートカットを使用して、端末内で実行されているプログラムに送信される別の信号です。 これは終了するように指示し、プログラムは正常に終了するか、シグナルを無視することができます。 前のものとは異なり、メモリ ダンプが生成されます。 キーボード ショートカット Ctrl+/;
  • ため息- 制御端末との接続が切断されたことをプロセスに通知します。主にインターネットへの接続が切断されたときにシステムによって送信されます。
  • シグターム- プロセスを直ちに終了しますが、プログラムによって処理されるため、子プロセスを終了してすべてのリソースを解放できます。
  • シギキル- これもプロセスを直ちに終了しますが、前のオプションとは異なり、プロセス自体には転送されず、カーネルによって処理されます。 したがって、リソースと子プロセスは実行されたままになります。

プロセスが正しく完了する機会を与える必要があることを理解することが重要です。 ポートとソケットを解放し、閉じ、一時ファイルを削除することをお勧めします。 したがって、すぐに SIGKILL を送信しないでください。 上記の順序で終了信号を送信します。

初めに Ctrl+C、可能であれば、SIGTERM - プロセスは終了しますが、これは文化的に行われ、最後の手段 SIGKILL としてのみ行われます。 では、実際に pid Linux を使用してプロセスを強制終了する方法を見てみましょう。 常に SIGKILL を使用している場合は、次の図が思い浮かびます。

Linux プロセスを強制終了するにはどうすればよいですか?

kill ユーティリティは、Linux でプロセスに信号を送信するために使用されます。 その構文は非常に単純です。

$ kill - プロセス PID シグナル

この信号は、プロセスを完了するための上記の信号のいずれかです。 デフォルトでは、このパラメーターが指定されていない場合、SIGTERM シグナルが使用されます。これは非常に正しいものです。 どのプロセスを終了する必要があるかを示す必要もあります。 これを行うには、一意のプロセス識別子 (PID) が使用されます。

ping ユーティリティを実行しているとします。 kill を使用して終了したいと思います。 次に、まず ps コマンドを使用してその識別子を見つけます。

ps 補助 | grep ping

1 行目は ping ユーティリティ自体を表示し、2 行目は ps プログラム自体を表示します。 必要な PID を取得し、SIGTERM を使用してプロセスを終了します。

キル -TERM 20446

このコマンドの後でもプロセスがハングし続ける場合に限り、ps を実行することでこれを確認できます。 SIGKILL を実行できるのは今だけです。

殺す -KILL 20446

ここでもう一度確認してみましょう:

プロセスがスーパーユーザーとして実行されている場合は、当然のことながら sudo を使用する必要があります。 少なくともこの PID を調べる必要があるため、PID によってプロセスを強制終了することが常に便利であるとは限りません。 xargs を使用して複雑な構造を作成し、プロセス名から pid を自動的に計算し、すぐに終了することもできますが、これは必須ではありません。 特別なユーティリティはすでに存在します。

pkill を使用してプロセスを強制終了する方法

pkill ユーティリティは kill のラッパーであり、まったく同じように動作し、同じ構文を持ちます。必要なのは、プロセス名をプロセス識別子として渡すことだけです。 ユーティリティは proc ディレクトリをスキャンし、その名前を持つ最初のプロセスの PID を見つけて、それに SIGTERM を送信します。 この方法で、Linux というプロセスを強制終了できます。 たとえば、同じ ping を完了したい場合:

信号タイプを手動で設定することもできます。

pkill -TERM ping

ps の代わりに、pgrep ユーティリティを使用してプロセスの pid を検索し、プログラムが完了していることを確認できます。

ただし、プログラムが複数のプロセスを作成した場合、たとえば、chromium または Firefox ブラウザがタブごとに個別のプロセスを作成した場合、このユーティリティはほとんど役に立ちません。 ここで次のオプションが必要になります。

killallを使用してプロセスを停止する方法

killall は、前の 2 つのユーティリティと同様に機能します。 また、プロセス名をパラメータとして受け取り、/proc ディレクトリ内でその PID を検索します。 ただし、このユーティリティはその名前を持つすべてのプロセスを検出し、それらを終了します。 例えば:

ご覧のとおり、いくつかのプロセスが実行されています。残っているのは、killall を使用して Linux プロセスを停止することだけです。

このコマンドは実行中のすべての ping ユーティリティを終了します。これを確認するには、pgrep を再度実行します。

結論

この記事では、Linux プロセスを強制終了する方法について説明しました。 この作業は時には非常にやりがいのあるものになりますが、正しく行う必要があることを理解することが重要です。 SIGTERM の代わりに SIGKILL を渡すことが非常に危険であるというわけではありませんが、行う価値はありません。 この情報がお役に立てば幸いです。