Linux
 Computer >> コンピューター >  >> システム >> Linux

Linux での「停止ジョブが実行中です」シャットダウン一時停止を修正する

最新の Linux ディストリビューションを使用している場合は、シャットダウン中に必ず「停止ジョブが実行中です」というメッセージが表示され、シャットダウン プロセスが最大 90 秒間一時停止されます。このメッセージが表示される理由と、それを軽減する方法を確認してください。

目次

これは安全機能であり、バグではありません

まず最初に知っておく必要があるのは、「停止ジョブが実行中です」というメッセージはシステムに組み込まれた安全機能であり、バグではないということです。

Ubuntu、Fedora、Arch などの最新の Linux ディストリビューションは、Systemd を使用してブート プロセスとシャットダウン プロセスを管理します。 「シャットダウン」をクリックすると、Systemd は電源プラグを抜くだけではありません。 SIGTERM と呼ばれる丁寧なシグナルを送信します。 実行中のすべてのサービスとアプリケーションに適用されます。ほとんどのアプリケーションは、このシグナルを受信した後、データを保存し、ファイルを閉じ、正常にシャットダウンします。

ただし、一部のサービスはタスクを完了し、シグナルを無視するまでにさらに時間がかかります。そのとき、警告メッセージが表示されます。この遅延は通常、ネットワーク マネージャー、コンテナ、ユーザー セッション、ネットワークにマウントされたドライブなどの特定のサービスが、接続を閉じたりデータを安全に保存したりするために余分な時間が必要なために発生します。

多くの Linux ユーザーは、「ジョブが実行中です」というメッセージが表示されると、何かが壊れていると思い込み、修正を検索します。真実は、Systemd 開発者がこの動作を意図的に構築したということです。基本的に、これは保留中のタスクを完了するために Systemd がサービスに与える待ち時間 (通常は 90 秒) です。サービスが設定されたタイムアウト内に終了しない場合、Systemd はSIGKILL を使用してサービスを強制的に終了します。 そしてシャットダウンプロセスを続行します。

Linux での「停止ジョブが実行中です」シャットダウン一時停止を修正する

この正常なシャットダウンにより、多くのアプリケーションは、ファイルのクローズ、データベース トランザクションの完了、ファイル システムのアンマウントなどの作業を終了します。待機をなくしてシャットダウンを高速化することはできますが、そうすると、最近の書き込みやトランザクションが失われたり、データベースやジャーナル ファイルが破損したり、マウントされたドライブが不安定な状態のままになったりするリスクも高まります。

デフォルトのタイムアウトを短縮する

デフォルトの 90 秒の待機時間は、ほとんどのサービスがクリーンアップ ルーチンを完了するのに十分な時間であるため、多くの Linux ユーザー、特に古いハードウェアを使用しているユーザーにとってバランスが取れています。ただし、最新のラップトップまたはデスクトップ システムを実行しているユーザーにとって、90 秒は長すぎると感じる場合があります。

理由が何であれ、未完了のサービスにタスクを完了するまでに特定の秒数を与えるように systemd に指示することで、システム設定ファイルを微調整してタイムアウトを短縮できます。

開始するには、ターミナルを起動し、好みのテキスト エディタを使用してシステム設定ファイルを編集します。

sudo nano /etc/systemd/system.conf
Linux での「停止ジョブが実行中です」シャットダウン一時停止を修正する

次に、タイムアウト変数を見つけます。システムのグローバル設定を表す多くのテキストが表示されます。 #DefaultTimeoutStopSec=90s に似た行を探します。 。行の先頭にあるハッシュ記号は、コメントアウトされているか無効になっていることを意味します。現在、システムは内部デフォルトを使用していますが、これはたまたま 90 秒です。

値を変更するには、まずハッシュ記号を削除して回線をアクティブにし、次に好みに基づいて 90 秒をより短い期間に変更します。

警告 :この値を 0 に設定しないでください。0 に設定すると、無限のタイムアウトが作成され、システムはプロセスが停止するまで永久に待機することになります。それは私たちが望んでいることとは逆です。中間の値 (20 ~ 30 秒) は、多くのユーザーにとって現実的な妥協点です。

完了したら、保存してエディターを終了します。変更を適用するには、通常、再起動する必要があります。この問題はシャットダウン中に発生するため、最後にもう一度長い待ち時間が発生する可能性があります。次回の起動後、新しい 2 番目の制限が有効になります。

注意 :場合によっては、#DefaultDeviceTimeoutSec=90s を有効にする必要がある場合があります。

タイムアウトが問題を示している可能性がある場合

ほとんどの場合、ジョブの停止タイムアウトは通常の動作です。ただし、特に同じサービスが繰り返しシャットダウンを遅らせる場合は、根本的な問題を示している可能性があります。ネットワーク マウントに到達できなくなったか、デーモンの設定が間違っているか、サービスがシャットダウン信号に適切に応答していない可能性があります。

シャットダウンに数秒ではなく数分かかっている場合、または同じサービスが毎回タイムアウトする場合は、調査する価値があります。時折発生する遅延は通常は無害ですが、継続的な遅延は注意が必要であることを示しています。

遅延の原因となっているサービスを特定するには、低速シャットダウンから再起動した後にログを確認します。

journalctl -b -1 -e
Linux での「停止ジョブが実行中です」シャットダウン一時停止を修正する

このコマンドは、前回のブートからのログを表示し、最後にジャンプします。上にスクロールして、警告、タイムアウト メッセージ、またはシステムが強制的に停止したサービスを探すことができます。

さらに、警告レベルのメッセージを表示して対象を絞り込むこともできます。

journalctl -b -1 -p warning
Linux での「停止ジョブが実行中です」シャットダウン一時停止を修正する

もう 1 つの便利なチェックは、次の Systemd 分析コマンドを実行することです。

systemd-analyze blame

このコマンドは起動時間に重点を置いていますが、起動に時間がかかるサービスはシャットダウン中にも同様に動作することがよくあります。ジョブ停止メッセージをトリガーする傾向のあるその他の一般的なサービスには次のものがあります。

  • ネットワーク サービス
  • NFS や SMB などのリモート ファイル システム
  • データベースサーバー
  • コンテナおよび仮想マシンのマネージャー
  • 外部ドライブと自動マウント ユニット

ネットワークベースのマウントは、接続が不安定であったり、接続が利用できなくなったりすると、特に遅延が発生しやすくなります。また、シャットダウン タイムアウトを短くすると、シャットダウンが速く感じられるようになりますが、根本的な問題は解決されません。サービスのシャットダウンが一貫して遅れている場合は、根本原因に対処すると、長期的にはより良い結果が得られます。

最終的な考え

Linux では、頑固なサービスがシャットダウンするまでの待ち時間など、システムを高度に制御できます。また、バックグラウンド アプリケーションを管理し、不要なサービスを無効にして、シャットダウン時間と起動時間の両方を改善することもできます。


  1. 知っておくべき4つの驚くべきLinuxセキュリティの問題

    セキュリティ上の問題のためにWindowsを置き去りにしました。賢明な選択肢は、より安全なことで有名なLinuxに移行することでした。しかし、あなたが思っているほど安全ですか? 2016年を通して、Linuxのまったく新しい次元について学びました。セキュリティの脅威は、Windowsの場合と同じように発生する可能性があります。 Linuxでは昔ながらのウイルスは問題にならないかもしれませんが、トロイの木馬、ランサムウェア、ブラウザのセキュリティはすべて、注意する必要のある問題です。 それで、これらの脅威は何ですか?見てみましょう。 1.Linuxのトロイの木馬とバックドア トロイの木馬パ

  2. これは北朝鮮の技術がどのように見えるかです

    北朝鮮は謎です。 1953年の朝鮮戦争の終結以来、それは世界の他の地域から切り離された孤立した庵の王国として存在してきました。観光客はほとんどいません。それは最近、西側世界との外交関係を正常化したばかりであり、米国とはまだ話し合っていない。建物は色あせており、永続的な崩壊状態にあります。プロパガンダのポスターが通りに並んでおり、愛国的な音楽が絶えずサイレンから鳴り響いています。忘れられた時代へのタイムカプセルとして存在します。新ソビエトの遊び場。 でも中には、あなたや私と同じような人がいます。仕事をしている人や家族がいます。地球上で最も普通でない国の1つで、普通の生活を送っている人々。そし