Ubuntuを実行していますが、/etc/rc0.d
、/etc/rc1.d
、/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
質問:
dovecot
とntp
の複製をrc0.d
とrc6.d
を除くすべてのディレクトリにインストールしたのはなぜですか?dovecot
とntp
がどの順序で実行されるかを上から確認できますか?ntp
の前にdovecot
を実行するようUbuntuに指示する適切な方法は何ですか?runlevel
sであり、ほとんどの* NIXシステムで使用されているSystem Vスタイルのイニシエーションです(systemd
ベースのシステムを除いて)。カーネル/ユーザーの起動時に、実行するrunlevel
を決定し、そのrunlevel
のみを実行します。つまり、runlevel
に応じて、別のプログラムセットで起動できます。停止と再起動のランレベルもありますが、起動部分に焦点を当てているので、今のところは無視してみましょう。runlevel
は1つだけなので、一部のプログラムは、異なるまたは同じパラメーターを同じまたは異なる順序で異なるrunlevel
sで開始/停止する必要があります(すべてのランレベルが同じではありません)すべてのOS)。しかし、Ubuntuはランレベル3から5を2からコピーしているため、同じです。runlevel
sは、起動時またはrunlevel
を変更したときに一度だけ実行されます。ntp
スクリプトは最初に実行され、次にランレベル2-5でdovecot
が実行されます。ランレベル1の場合は異なります。スクリプト名の序数(S23ntp
)は実行の順序を示します。したがって、それはすべて、使用しているランレベルに依存します。Ubuntuランレベルに関する Wikipedia 記事の詳細
他の人が指摘したように、答えは基本的にオペレーティングシステムの動作モードである runlevels に関するすべてです。 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.d
のすべてのリンクは、K
で始まることに注意してください。これは、再起動のためにすべてを停止し、何も開始しないようにする必要があるためです。
先頭の文字の後の番号は、リンクされたスクリプトの実行順序を示しています。番号が小さいものは、番号が大きいものより先に実行されます。したがって、具体的な例では、S23ntp
が実行されます(この場合は開始されます)beforeS24dovecot
。
1)複数のrcX.dディレクトリは、「X」ランレベル中に開始または停止するサービスを指定します。
2)rc0.dは、シャットダウンされたランレベル0用です。 rc6.dは再起動用です。残りはすべて、異なるランレベル(2〜5)用です。 Sは開始を意味し、Kはキルを意味します。これらは基本的に/etc/rc.dにある元のスクリプトへのリンクです。 S/Kの後の数字は、サービスが開始/強制終了される優先順位です。
3)はい、それらが複数回指定されている場合は、start/killスクリプトが複数回実行されます。しかし、誰もそれをしたくありません。
4)優先順位番号を見ると、最初にntpサービスが開始され、次にdovecotが開始されます。
5)4番目のポイントは方法です。