私はdebianjessieに切り替えたところですが、グラフィカルディスプレイマネージャーのwdm
を含め、ほとんどすべてが問題なく動作します。 。
問題は、これがどのように機能するのか理解していないということです。明らかに私の/etc/init.d/wdm
スクリプトが呼び出されるのは、初期のexit
を配置したためです。 そこでは、wdmは開始されません。しかし、代わりに/etc/rc3.d
の名前を変更すると ディレクトリ(私のデフォルトのランレベルは3でした)、それでもwdmは開始されます。
systemdがこのスクリプトをどのように見つけるかを知ることができず、他のすべてのinit.dスクリプトに対してどのように機能するかを理解していません。
- systemdはいつどのようにinit.dスクリプトを実行しますか?
- 長期的には、すべてのinit.dスクリプトを削除する必要がありますか?
承認された回答:
カオスの答えは、いくつかのドキュメントが言っていることです。しかし、それはsystemdが実際に行うことではありません。 (van Smoorenburg rc
ではありません どちらかでした。ヴァンスムーレンブルクrc
最も間違いなくしなかった insserv
であるLSBヘッダーを無視します 初心者のために、静的な順序を計算するために使用されます。)「非互換性」ページなどのFreedesktopのドキュメントは、これらの点やその他の点で実際には間違っています。 (HOME
実際、環境変数は たとえば、よく設定されます。これは長い間どこでも完全に文書化されていませんでした。少なくともマニュアルに記載されていますが、Freedesktop WWWページはまだ修正されていません。)
systemdのネイティブサービスフォーマットはサービスユニットです 。 systemdのサービス管理は適切に単独で動作します それらに関しては、(システム全体で).service
が存在する9つのディレクトリの1つから読み取ります。 ファイルは生きることができます。 /etc/systemd/system
、/run/systemd/system
、/usr/local/lib/systemd/system
、および/usr/lib/systemd/system
それらのディレクトリのうちの4つです。
van Smoorenburg rc
との互換性 スクリプトは、systemd-sysv-generator
という名前の変換プログラムで実現されます。 。このプログラムは、/usr/lib/systemd/system-generators/
にリストされています。 ディレクトリであるため、ブートストラッププロセスの早い段階で、起動するたびにsystemdによって自動的に実行されます。また、systemdが後で構成を再ロードするように指示されるたびに実行されます。
このプログラムはジェネレーターです は、サービスユニットファイルをオンザフライで作成することを目的とした補助ユーティリティの一種であり、これらの9つのディレクトリ(ジェネレーターのみが使用することを目的としています)のうち3つが配置されているtmpfsにあります。 systemd-sysv-generator
van Smoorenburg rc
を実行するサービスユニットを生成します /etc/init.d
のスクリプト 、他の6つの場所にすでに存在するその名前のネイティブsystemdサービスユニットが見つからない場合。
systemdサービス管理は、サービスユニットについてのみ知っています。これらの自動的に(再)生成されたサービスユニットは、van Smoorenburg rc
を呼び出すように記述されています。 スクリプト。とりわけ、次のようなものがあります。
[Unit] SourcePath=/etc/init.d/wibble [Service] ExecStart=/etc/init.d/wibble start ExecStop=/etc/init.d/wibble stop関連:Ubuntu – .shスクリプトを実行する方法は?
受け取った知恵は、van Smoorenburg rc
スクリプトにはLSBヘッダーが必要であり、/etc/rc?.d/
によって課せられた優先順位を尊重せずに並行して実行されます。 システム。これはすべての点で正しくありません。
実際、LSBヘッダーは必要ありません。systemd-sysv-generator
がない場合は、 より限定された古いRedHatコメントヘッダーを認識できます(description:
、pidfile:
、など)。さらに、LSBヘッダーがない場合は、/etc/rc?.d
の内容にフォールバックします。 シンボリックリンクファーム、リンク名にエンコードされた優先順位を読み取り、それらからの注文の前後に構築し、サービスをシリアル化します。 LSBヘッダーは要件ではないだけでなく、ある程度シリアル化する順序付けの前後にそれら自体がエンコードされるだけでなく、完全に存在しない場合のフォールバック動作は、実際には大幅に非並列化された動作です。
/etc/rc3.d
が 別の/etc/rc?.d/
を介してそのスクリプトを有効にした可能性があります。 ディレクトリ。 systemd-sysv-generator
/etc/rc2.d/
のいずれかにリストされていることを翻訳します 、/etc/rc3.d/
、および/etc/rc4.d/
ネイティブのWanted-By
systemdのmulti-user.target
との関係 。ランレベルはsystemdの世界では「時代遅れ」であり、忘れることができます。
さらに読む
- systemd-sysv-generator 。 systemdのマニュアルページ。 Freedesktop.org。
- 「生成されたプロセスの環境変数」。
systemd.exec
。 systemdのマニュアルページ。 Freedesktop.org。 - https://unix.stackexchange.com/a/394191/5132
- https://unix.stackexchange.com/a/204075/5132
- https://unix.stackexchange.com/a/196014/5132
- https://unix.stackexchange.com/a/332797/5132