シャットダウンコマンドを実行すると、次のステータスメッセージが表示されることがあります。
A stop job is running for Session 1 of user xy
その後、システムは???に応じてしばらくまたは永久に中断されます。
それでは、「封じ込め」とはまさに何ですか?
また、なぜかかる時間をかなり正確に予測する時もあり、永遠にかかる時もあるのでしょうか?
ベストアンサー1
systemdは「ジョブ」キューで内部的に機能します。各働く(少し簡素化) 取るべきアクションは、特定のタスクを停止、確認、開始、または再開することです。単位。
(例えば)systemdにサービスユニットは、ユニット要件と依存関係に基づいて目標を達成するために必要なすべてのユニット(サービスユニット、設置ユニット、機器ユニットなど)の作業停止と開始リストを開発し、ユニット注文関係に基づいてソートすることで問題を解決します。 (可能であれば)不一致を修正し(最後のステップが成功した場合)、キューに入れます。
その後、待機中の「ジョブ」を実行しようとします。
ユーザーxyに対してセッション1で実行されているジョブを停止する
その単位名前を表示するこれはSession 1 of user xy
。 (表示名で判断すると)会議一つではないユニット提供する単位。これはlogind
、systemd プログラムとその PAM プラグインによって維持されるユーザー空間ログインセッションの抽象化です。これは、(本質的または理論的に)このユーザーのどこかで「ログインセッション」として実行されるすべてのプロセスをグループ化したものです。
待機中のジョブはですstop
。システムユーザーが誤ってセッションをマージしたため、時間がかかることがあります。壊すセッションを含める閉鎖。彼らは後者を操作するために前者を壊し、それに対応して、一部の人々は後者を壊すために前者を操作するためにシステムを変更します。体系化された人々は、これら2つが互いに異なるという事実に気づくべきです。
SIGTERM
ログインセッションで無視されるか、一度確認された後に終了するのに長い時間がかかる項目がありますSIGTERM
。皮肉なことに、前者はいくつかのタスク制御シェルの長い動作です。ログインセッションリーダーがこれらの特定のジョブ制御シェルである場合、これを終了する正しい方法は、セッションが終了したことを通知することです。こんにちはだから彼らはすべて終了しました彼らジョブ(内部システムジョブとは異なるタイプのジョブ)を実行した後、それ自体が終了します。
実際に起こるのは、systemdがデバイスのタイムアウト停止SIGKILL
もちろん、このタイムアウトはデバイスごとに設定でき、タイムアウトが発生しないように設定できます。これが人々が他の行動を見ることができる理由です。
追加読書
- レナート・ペトリング(2015)。 システム。システムのマニュアルページ。 freedesktop.org.
- ジョナサン・ド・ボーイン・ポラード(2016-06-01)。systemdは、ユーザーがログアウトした後にバックグラウンドプロセスを終了します。。 825394.Debianのバグトラッカー。
- レナート・ペトリング(2015)。 systemd.kill。システムのマニュアルページ。 freedesktop.org.
- レナート・ペトリング(2015)。 システムサービス。システムのマニュアルページ。 freedesktop.org.
- bashがSIGTERMを無視するのはなぜですか?
- https://superuser.com/questions/1102242/