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

「停止ジョブが実行されています…」のように、「停止ジョブ」とは正確には何ですか?

シャットダウンコマンドが発行された後、次のようなステータスメッセージが表示されることがあります。

A stop job is running for Session 1 of user xy

その後、システムはしばらくの間、または???

に応じて永久にハングします。

では、「ストップジョブ」とは正確には何ですか?

また、なぜそれがかかる時間を非常に正確に見積もるのか、それ以外の場合は永久に実行できるのですか?

承認された回答:

systemdは、「ジョブ」のキューの観点から内部的に動作します。各ジョブ (少し簡略化)は、実行するアクションです。特定のユニットを停止、確認、開始、または再起動します。 。

たとえば、systemdにサービスユニットを開始するように指示した場合 、それは、ユニットの要件と依存関係に従って、その目標を達成するために必要なユニット(サービスユニット、マウントユニット、デバイスユニットなど)の停止および開始ジョブのリストを作成し、ユニットの順序関係に従ってそれらを順序付けます、解決し、(可能であれば)自己矛盾を修正し、(その最終ステップが成功した場合)それらをキューに入れます。

次に、キューに入れられた「ジョブ」を実行しようとします。

ユーザーxyのセッション1で停止ジョブが実行されています

ユニット表示名 これがSession 1 of user xyです 。これは(表示名から)セッションになります サービスではなくユニット 単位。これは、systemdのlogindによって維持されるユーザースペースのログインセッションの抽象化です。 プログラムとそのPAMプラグイン。これは、(本質的に、理論的には)そのユーザーがどこかで「ログインセッション」として実行しているすべてのプロセスのグループです。

それに対してキューに入れられたジョブはstopです 。そして、systemdの人々が誤ってセッションを混乱させたため、おそらく長い時間がかかります hangup セッションシャットダウン 。彼らは前者を壊して後者を機能させ、それに応じて一部の人々はsystemdを変更して後者を壊して前者を機能させます。システム化された人々は、彼らが2つの異なるものであることを本当に認識する必要があります。

ログインセッションで、SIGTERMを無視するものがあります または、SIGTERMを確認すると、終了するまでに長い時間がかかります。 。皮肉なことに、前者は一部のジョブ制御シェルの長年の動作です。ログインセッションリーダーがこれらの特定のジョブ制御シェルである場合にそれらを終了する正しい方法は、セッションがハングアップしたことをリーダーに通知することです。 、するとすぐに、すべてのを終了します。 ジョブ(内部のsystemdジョブとは異なる種類のジョブ)を実行してから終了します。

関連:Linux – Gnomeターミナルが起動しませんか?

実際に起こっているのは、systemdがユニットの停止タイムアウトを待機していることです。 SIGKILLに頼るまで 。もちろん、このタイムアウトはユニットごとに構成可能であり、タイムアウトしないように設定できます。したがって、なぜ人は潜在的に異なる行動を見ることができるのか。

さらに読む

  • レナートポッターリング(2015)。 systemd。 systemdのマニュアルページ。 Freedesktop.org。
  • ジョナサンデボインポラード(2016-06-01)。 systemdは、ユーザーがログアウトした後、バックグラウンドプロセスを強制終了します 。 825394。Debianバグトラッカー。
  • レナートポッターリング(2015)。 systemd.kill。 systemdのマニュアルページ。 Freedesktop.org。
  • レナートポッターリング(2015)。 systemd.service。 systemdのマニュアルページ。 Freedesktop.org。
  • bashがSIGTERMを無視するのはなぜですか?
  • https://superuser.com/questions/1102242/

Linux
  1. systemd サービスを停止する方法

  2. Linuxでのセッションの定義は何ですか?

  3. シェルが終了したときにバックグラウンドジョブが強制終了されるか、強制終了されるかを正確に決定するものは何ですか?

  1. ティー:--ignore-interrupts オプションは正確に何をしますか?

  2. <() の bash (および =() の zsh) とは正確には何ですか?

  3. iptables:--src-type LOCAL の正確な意味は?

  1. AVAHIとは正確には何ですか?

  2. init は正確に何をしますか?

  3. WordPress - WordPress 就職面接の準備