Linuxでは、「/etc/init.d」と「/etc/rcX.d」ディレクトリの関係は何ですか?

Linuxでは、「/etc/init.d」と「/etc/rcX.d」ディレクトリの関係は何ですか?

私は「という本を通してこれをやっています。Linuxコマンドラインとシェルスクリプト聖書、第2版「本には次の内容があります。

一部のLinux実装には、起動時に自動的に起動されるプロセステーブルが含まれています。 Linuxシステムでは、このテーブルは通常特殊ファイル/ etc / inittabsにあります。

一般的なUbuntu Linuxディストリビューションなどの他のシステムでは、起動時に個々のアプリケーションを起動および停止するためのスクリプトを含む/etc/init.dフォルダを使用します。これらのスクリプトは、/etc/rcX.dフォルダ内のエントリから起動されます。ここで、Xは実行レベルです。

たぶん私は最初にLinuxに触れ、引用された2番目の段落の意味を理解していないからです。誰かがより簡単な言語で説明できますか?

答え1

init.dorについては忘れてrcx.d仕事を非常に単純に保ちましょう。別のスクリプトを 1 つずつ実行または終了するだけを担当するプログラムを作成すると想像してください。

しかし、次の質問は、順番に実行されることを確認することです。どのように実行しますか?

scriptsスクリプトを実行するためにフォルダを調べるこのプログラムを想像してみましょう。スクリプトの優先順位を指定するには、番号順に名前を付けることができます。この順序はinit.dとの間の関係を決定します。rc

つまり、init.d実行するスクリプトとrcX.d実行する順序が含まれます。

Xの値はrcX.d ランレベルです。これはオペレーティングシステムの現在の状態にゆるやかに変換されます。

スクリプトを詳しく見てみると、rcX.d次の形式があります。

Xxxabcd
  • Xスクリプトが現在ランレベルにある必要があるかどうかを示すか、またはでK置き換えられます。Skilledstarted
  • xx注文番号です
  • abcdスクリプト名です(名前は重要ではありませんが、実行するスクリプトを指します)。

答え2

Linuxにはいくつかの初期化システムがあります。あるシステム初期化(伝統的な),突然現れる(Ubuntuの代替)システムD(FedoraとGnomeで駆動)ディレクトリであり、/etc/init.dSysVinit/etc/rc?.dで使用されます。この本では、情報が少し古くなっているか(Ubuntuは他の人と同じようにSysVinitを使用しています)、互換性のためにディレクトリがまだ存在するため、Ubuntuはその内容を参照できます。

/etc/init.dサービスを開始および停止するための指示を含むいくつかのスクリプトが含まれています。これらのサービスの一部は起動時に開始する必要があり、他のサービスはマルチユーザーモードで起動する必要がありますが、シングルユーザーメンテナンスモードでは起動しないでください。また、必要なさまざまなサービスセットを使用してさまざまなモードを定義できます。 SysVinit は、以下を介してこのタスクを管理します。ランレベル。このディレクトリには、/etc/rc$N.d実行レベルN()に入ったときに実行されるスクリプト/etc/rc$N.d/S*と、実行レベルN()から出るときに実行されるスクリプトが含まれています/etc/rc$N.d/K*。多くのランレベルには共通のスクリプトがあるため、各ランレベルのスクリプトのコピーを保存する代わりに、スクリプトは1つの場所に保存され、ランレベル固有のディレクトリには/etc/init.dシンボリック/etc/rc?.dリンクが含まれています。また、シンボリックリンクの名前は、そのランレベルでサービスが開始(S*)または停止(終了)されるかどうかを示し、K*数値プレフィックスはスクリプトの実行順序を制御するために使用されます。

巡回を担当するスクリプトは(Upstart UbuntuとDebianでは、場所は他のLinuxディストリビューションによって異なる場合があります)/etc/rc$N.dです/etc/init.d/rc

答え3

/etc/init.d初期化スクリプトが属するディレクトリです。

これはetc/rcX.d、ランレベルに入るときにどのサービスが終了または開始されるかを制御するリンクですX。 Kで始まるファイルはパラメータとして実行され、Kで始まるファイルはrcX.dパラメータとして実行されます。開始シーケンスと停止シーケンスは通常、または後に続く2桁の数字で順序付けられます。正しい開始シーケンスと停止シーケンスを保証するために、2つのシーケンスの合計は通常100です。 stopSstartKS

リンクを削除したり、大文字と小文字を変更したり、ランレベルKでプログラムを無効にしたりできます。Sks

編集:管理者は通常、/etc/init.dディストリビューションに応じて他のディレクトリへのシンボリックリンクになるスクリプトを実行します。 (配布版ごとに規格が異なります。)

rcX.d実行レベルを変更するために初期化コードで使用されます。

答え4

@ BillThorはすでにこの質問に非常によく答えていますが、/etc/rcX.d私の理解は次のとおりです/etc/init.d

  • /etc/init.d起動時に個々のアプリケーションを起動および停止するためのスクリプトが含まれています。
  • /etc/rc?.d/etc/init.dディレクトリはさまざまな実行レベルを表し、その中に含まれるスクリプトはディレクトリ内の実際のスクリプトへのシンボリックリンクにすぎません。ランレベルを変更すると、非常に基本的なシングルユーザーモードでコンソール専用モード、高度なグラフィカルインターフェイスなどのシステムモードが変わります。

したがって、ディレクトリ自体なしで/etc/rc?.dディレクトリを使用することはできません/etc/init.d(もちろんその逆も同様です)。

関連情報