Ubuntuの/etc/init.d
ディレクトリは、私がより標準的であると想定しているものと(機能的に)まったく同じです/etc/rc.d/
(少なくともArchでは)?起動スクリプトにrc.dではなくinit.dを使用する特別な理由はありますか?
/etc/init.dは、SVR4の古い歴史的な場所でした。 redhatが/etc/rc.d/レベルを追加した理由を忘れました。私は物事をrc.dに分離することを考えていますが、下位互換性のためにとにかくたくさんのシンボリックリンクを追加する必要がありました。したがって、Redhatには/etc/init.dがあり、それは他の場所でシンボリックリンクしているだけです。
したがって、標準の場所は/etc/init.dですが、実際のディレクトリではなくシンボリックリンクである可能性があります。
/etc/rc.localでBSDをコピーした本当に古いLinuxディストリビューションがいくつかありましたが、それを使用する人はほとんどいません。
歴史的に、/etc/rc.d
ディレクトリツリーは、システムの初期化という4.4 BSDの伝統に従うInitシステムを示します。これは、通常rc
initシステムと呼ばれます。最新の(Free/Open/Net)BSDシステムとSlackware Linuxはすべてこの伝統に従っています。
/etc/init.d
ディレクトリツリーは、システム初期化のAT&T UNIX、SunOS、Solarisの伝統に従うSystem V(SysV)initシステムを示します。これは一般にSysV Initシステムと呼ばれます。 Debian本体はまだWheezyシリーズでこの伝統に従っていますが、JessieシリーズでSystemDを使用する予定です。歴史的に、RedHatとその派生製品はSysV Initを使用していましたが、現在は使用していません。
また、時間の経過とともに、両方のinitスキームの機能がディストリビューションで採用されるようになりました。
さて、/etc/init.d
は、initスクリプトをすばやくデプロイできる場所です。このスクリプトをアクティブにするための2番目のステップは、chkconfig
コマンドを実行することです。 chkconfig --add <yourscript>
を実行するとします。たとえば、/etc/init.d/<yourscript>
と/etc/rc.d/rcX.d/S50<script>
の間にシンボリックリンクが作成されます。 rcX.dのXはスクリプトのランレベル番号を表し、S50はスクリプトタイプを表します(これらのタイプは2つあります。SとKです。Sは起動時にスクリプトを開始するようシステムに指示し、Kはシステムに指示しますシャットダウン時にスクリプトを正常に終了します。S/ Kの後の数字は、最初にアクティブになっているスクリプトに依存しているスクリプトがある場合に、これらが発生する順序を表しています。デフォルトでは、スクリプト内でランレベルが指定されていない場合、またはランレベルコマンドを発行すると、CentOS6はランレベル2、3、4、5のS50スクリプトとランレベル0、1、6のK50を作成します。
実際、少なくともCentOS 6.8サンティアゴでは、/etc/init.d
は/etc/rc.d
へのソフトリンクにすぎません。
PuppyLinuxには/ etc/rc.dと/ etc/init.dの両方があり、どちらもシンボリックリンクではありません。シンボリックリンクとは/ etc/rc.d/init.dであり、レベルを/ etc/init.dにリンクします(私はSlackwareを探しています)ベースのパピー-Ubuntuベースのフレーバーや他のフレーバーもあります。)それぞれにREADME.txtがあり、そのアプローチを説明しています。