/etc/init/
と/etc/init.d/
の違いは何ですか?
より一般的には、.d
接尾辞はディレクトリにどのような意味を持ちますか?
/etc/init.d
には、System V initツール(SysVinit)で使用されるスクリプトが含まれています。これはLinux用の従来のサービス管理パッケージで、init
プログラム(カーネルの初期化が完了したときに実行される最初のプロセス¹)と、サービスを開始および停止して構成するインフラストラクチャが含まれます。具体的には、/etc/init.d
のファイルは、特定のサービスを管理するstart
、stop
、restart
、および(サポートされている場合)reload
コマンドに応答するシェルスクリプトです。これらのスクリプトは、直接呼び出すことができます(最も一般的には)他のトリガー(通常、/etc/rc?.d/
のシンボリックリンクの存在)を介して呼び出すことができます。
/etc/init
には、Upstartが使用する構成ファイルが含まれています。 Upstartは、Ubuntuが支持する若いサービス管理パッケージです。 /etc/init
内のファイルは、Upstartにstart
、stop
、reload
の構成方法、またはサービスのstatus
を照会する方法とタイミングを指示する構成ファイルです。明快な時点で、UbuntuはSysVinitからUpstartに移行しているため、Upstart構成ファイルが推奨されているにもかかわらず、多くのサービスにSysVinitスクリプトが付属している理由を説明しています。実際、SysVinitスクリプトはUpstartの互換性レイヤーによって処理されます。
ディレクトリ名の.d
は、通常、特定の状況の多くの構成ファイルまたはスクリプトを含むディレクトリを示します(たとえば、/etc/apt/sources.list.d
は、仮想sources.list
を作成するために連結されたファイルを含みます; /etc/network/if-up.d
は、ネットワーク interfaceがアクティブ化されます)。通常、この構造は、ディレクトリ内の各エントリが異なるソースから提供される場合に使用されるため、各パッケージは、単一の構成ファイルを解析して参照することなく、独自のプラグインを配置できます。この場合、「init」がディレクトリの論理名であり、SysVinitが最初に来てinit.d
を使用し、Upstartが同様の目的のディレクトリにプレーンinit
を使用したことがあります(より「主流」 」、おそらく/etc/upstart.d
を代わりに使用した場合は、less慢さは減ります。
¹ initrdをカウントしない
通常、「。d」はディレクトリ名に追加され、以前は単一のスクリプトまたは単一の構成ファイルで処理されていた(または処理されていた)ものが便宜上複数のファイルに分割されていることを示しますが、一緒に含めるか、実行する必要があります。
たとえば、/etc/Apache/conf.d/
または/etc/apt/sources.d/
など
どの順序でインクルード/実行するかが重要な場合、これらのディレクトリ内のファイルは、正しい順序で実行されるように、「00-default」や「80-user」などの数字で始まることがあります。
/etc/init.d/
の場合、「init.d」内のスクリプトをすべて実行する必要があることを示しています。しかし、今日では、最新のオペレーティングシステムの初期化システムはそれよりも少し複雑ですが、ディレクトリ名はまだそこにあります。
あなたが指摘するように、「。d」の命名法は不可解で奇妙であり、現代のシステムには実際には場所がありません。ほとんどの現代のサービスはそれを落とす傾向があることに気付くでしょう。
ディレクトリが/etc/init
ではなく/etc/upstart
である理由は、Upstartがプロジェクト名であり、実際にインストールされたバイナリがまだ/sbin/init
であるため、その構成が次の名前を持つことは意味がありませんバイナリと一致しませんでした。