/ etc / init /と/etc/init.d/の違いは何ですか?


回答:


229

/etc/init.dSystem V initツール(SysVinit)で使用されるスクリプトが含まれています。これはLinux用の従来のサービス管理パッケージであり、initプログラム(カーネルの初期化が完了したときに実行される最初のプロセス¹)と、サービスを開始および停止してそれらを構成するインフラストラクチャが含まれます。具体的には、内のファイルは、/etc/init.dに対応するシェルスクリプトですstartstoprestart(サポートされている場合)、およびreload特定のサービスを管理するためのコマンド。これらのスクリプトは、直接、または(最も一般的には)他のトリガー(通常、シンボリックリンクの存在)を介して呼び出すことができます/etc/rc?.d/

/etc/initUpstartが使用する構成ファイルが含まれています。Upstartは、Ubuntuが支持する若いサービス管理パッケージです。内のファイルは/etc/initどのように、いつまで成り上がりを語っ設定ファイルですstartstopreload設定、または照会statusサービスで。明快な時点で、UbuntuはSysVinitからUpstartに移行しているため、Upstart構成ファイルが優先されるにもかかわらず、多くのサービスにSysVinitスクリプトが付属している理由を説明しています。実際、SysVinitスクリプトはUpstartの互換性レイヤーによって処理されます。

.dディレクトリ名に一般的に(例えば、特定の状況のための多くの構成ファイルやスクリプトを含むディレクトリを表す/etc/apt/sources.list.d仮想作るために連結されているファイルが含まれていますsources.list/etc/network/if-up.dネットワークときに実行されるスクリプトが含まれ、私は NTER Fのエースがアクティブになるが)。通常、この構造は、ディレクトリ内の各エントリが異なるソースによって提供される場合に使用されるため、単一の構成ファイルを解析して参照することなく、各パッケージが独自のプラグインを配置できます。この場合、「init」がディレクトリの論理名であり、SysVinitが最初に使用されinit.d、Upstartが使用されたことがわかりますinit同様の目的のディレクトリの場合(/etc/upstart.d代わりに使用されていれば、より「主流」であり、おそらく慢ではなかったでしょう)。

¹initrd をカウントしない


28
難解な歴史的ノート:.dディレクトリはSystem Vで入力されました。当時は不可解な表記であり、最終的にはコードベースに入り込んで離れられなかった一人の考えです。たとえば、cat実行するタスクの名前が悪いと思う場合は、変更するためにシステム全体で何個のファイルに触れる必要があるかを想像してください。
msw

システムでは、両方のディレクトリがあり、UpstartとSysVinitのどちらが使用されますか?チェックする方法はありますか?
アヒーシュ14年

3
@AsheeshR upstartまたはという名前のパッケージがあるかどうかを確認しますsysvinit。また、最近のバージョンでは、それsystemdも同様である可能性があります(回答を書いたとき、Ubuntuには存在していませんでした)。それが提供するパッケージです/sbin/initdpkg -S /sbin/init)。
ジル14年

私が使用しているAWS Ubuntuインスタンス(Bitnamiから)では、upstart/ sbin / init(ran dpkg -S /sbin/init)を提供するパッケージです。しかし、Bitnamiはそのスクリプトを/etc/init.dディレクトリに配置しました。これは上記の@AsheeshRに対するあなたの答えと矛盾していませんか?ありがとうございました。
Sabuncu 14

@Sabuncuこれは、「SysVinitスクリプトがUpstartの互換性レイヤーによって処理される」例です。
ジル14

29

「.d」は通常、ディレクトリ名に追加され、以前は単一のスクリプトまたは単一の構成ファイルで処理されていた(または処理されていた)処理が便宜上複数のファイルに分割されたことを示しますが、一緒に含めるか、実行する必要があります。

たとえば、/etc/apache/conf.d/または/etc/apt/sources.d/

含める/実行する順序が重要な場合、これらのディレクトリ内のファイルは、正しい順序で実行されるように、「00-default」や「80-user」などの番号で始まる場合があります。

この場合/etc/init.d/、「init.d」内のスクリプトをすべて実行する必要があることを示しています。しかし、今日では、最新のオペレーティングシステムの初期化システムはそれよりも少し複雑ですが、ディレクトリ名はまだそこにあります。


たぶん、.dそれは通常、ブート時に開始される「デーモン」プロセスに関連していることを意味します。

21
.dは間違いなくディレクトリ用であり、デーモンではありません。
マーティン14

13

あなたが指摘するように、「。d」の命名法は不可解で奇妙であり、現代のシステムには実際には場所がありません。ほとんどの現代のサービスはそれを落とす傾向があることに気付くでしょう。

ディレクトリが存在する理由/etc/initとそうでない理由/etc/upstartは、Upstartがプロジェクト名であるためです。実際にインストールされたバイナリは依然として/sbin/init存在するため、バイナリと一致しない名前を設定することは意味がありません。


7
これは間違っています。たとえば、udev rules.d、Xorgの比較的最近xorg.conf.d、古すぎない/etc/profile.dなどを参照してください。
Ruslan14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.