/etc 内の rc0.d、rc1.d、... ディレクトリ

/etc 内の rc0.d、rc1.d、... ディレクトリ

/etc/rc0.d私は、、、、...、/etc/rc1.dというディレクトリがある Ubuntu を実行しています。/etc/rc2.d/etc/rc6.d

私のマシンからのサンプルファイル:

directory      example symlinks in the dir
------------------------------------------
/etc/rc1.d:    K76dovecot, K77ntp
/etc/rc2.d:    S23ntp, S24dovecot
/etc/rc3.d:    S23ntp, S24dovecot
/etc/rc4.d:    S23ntp, S24dovecot
/etc/rc5.d:    S23ntp, S24dovecot

質問:

  1. 複数の「rc」ディレクトリの目的は何ですか?
  2. Ubuntu がとを除くすべてのディレクトリにdovecotとの重複をインストールしたのはなぜですか?ntprc0.drc6.d
  3. 上記のように複数回指定した場合、実際には複数回実行されるのでしょうか?
  4. 上記からdovecotntp起動時にどのような順序で実行されるかわかりますか?
  5. ntpUbuntu を起動前に常に実行するように指示する適切な方法は何ですかdovecot?

答え1

他の人が指摘しているように、答えはランレベルこれらは基本的にオペレーティング システムの動作モードです。Linux では通常、次のようになります。

ID  Name                               Description
0   Halt                               Shuts down the system.
1   Single-user Mode                   Mode for administrative tasks.
2   Multi-user Mode                    Does not configure network interfaces and 
                                       does not export networks services.
3   Multi-user Mode with Networking    Starts the system normally.
4   Not used/User-definable            For special purposes.
5   Start the system normally with 
    with GUI                           As runlevel 3 + display manager.
6   Reboot                             Reboots the system.

したがって、各rcNディレクトリには、その実行レベルで実行されるスクリプトへのシンボリック リンクが含まれています。実際のスクリプトはすべて、通常、次の/etc/init.dディレクトリにあります。

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

シンボリックリンクの命名

名前が で始まるシンボリック リンクは、S問題のランレベルで開始されますが、名前が で始まるシンボリックリンクは強制終了されます。再起動ランレベルK内のすべてのリンクが で始まることに注意してください。これは、再起動時にすべてのリンクが停止され、何も開始されない必要があるためです。rc6.dK

最初の文字の後の数字は、リンクされたスクリプトの実行順序を示します。数字が小さいスクリプトは、数字が大きいスクリプトよりも先に実行されます。したがって、特定の例では、がS23ntp実行されます(この場合は開始されます)。前に S24dovecot

答え2

  1. これらはrunlevelであり、ほとんどの *NIX システム ( ベースのシステムを除くsystemd) で使用される System V スタイルの初期化です。 起動時にカーネル/ユーザーが何をrunlevel実行するかを決定し、その のみを実行しますrunlevel。 つまり、 に応じて、runlevel異なるプログラム セットで起動できます。 halt と reboot のランレベルもありますが、ここでは起動部分に焦点を当てているため、今は無視しましょう。
  2. runlevel起動時に実行されるのは1 つだけなので、一部のプログラムはrunlevel、異なるまたは同じパラメータで、同じまたは異なる順序で、異なる s で開始/停止する必要があります (すべてのランレベルがすべての OS で同じというわけではありません)。ただし、Ubuntu はランレベル 3 ~ 5 を 2 からコピーするため、同じになります。
  3. 番号runlevelは起動時または を変更したときに 1 回だけ実行されますrunlevel
  4. ntpスクリプトは、ランレベル 1 の場合とは異なり、最初にdovecotランレベル 2 ~ 5 で実行する必要があります。スクリプト名の序数 ( ) は実行順序を示します。したがって、すべては使用しているランレベルによって異なります。S23ntp
  5. ディストリビューションによって異なりますが、Ubuntu の場合は、スクリプトをランレベル 1 と 2 に追加できます。

詳細はウィキペディアUbuntu のランレベルに関する記事

答え3

1) 複数の rcX.d ディレクトリは、「X」ランレベル中に開始または停止するサービスを指定します。

2) rc0.d は、シャットダウンであるランレベル 0 用です。rc6.d は再起動用です。残りはすべて異なるランレベル (2 - 5) 用です。S は開始、K は終了を表します。これらは基本的に、/etc/rc.d 内の元のスクリプトへのリンクです。S/K の後の数字は、サービスが開始/終了される優先順位です。

3) はい、複数回指定すると、開始/終了スクリプトが複数回実行されます。しかし、誰もそれを望みません。

4) 優先度番号を見ると、ntp サービスが最初に開始され、次に dovecot が開始されます。

5) 4番目のポイントは方法です。

関連情報