Services
/etc 中的 rc0.d,rc1.d,… 目錄
我正在執行 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
問題:
- 多個“rc”目錄的目的是什麼?
- 為什麼 Ubuntu在除and之外的所有目錄中都安裝了
dovecot
and的副本?ntp``rc0.d``rc6.d
- 如果像上面一樣多次指定它們,它們實際上是否執行了多次?
- 你能從上面知道按什麼順序執行,
dovecot
並ntp
在啟動時執行嗎?- 告訴 Ubuntu在啟動
ntp
前始終執行的正確方法是什麼?dovecot
- 這些是
runlevel
s 並且是大多數 *NIX 系統使用的 System V 風格的啟動(除了systemd
基於 - 的系統)。當引導核心/使用者決定runlevel
它應該執行什麼並且只執行那個runlevel
. 這意味著runlevel
您可以使用一組不同的程序啟動。也有用於停止和重新啟動的執行級別,但是由於您專注於啟動部分,所以我們暫時忽略它們。- 由於
runlevel
在啟動時只執行一個,因此某些程序應該/想要以runlevel
相同或不同的順序在具有不同或相同參數的不同 s 處啟動/停止(並非所有作業系統中的所有執行級別都相同)。但是 Ubuntu 從 2 複製執行級別 3-5,這就是它們相同的原因。- No.
runlevel
只在啟動時或更改時執行一次runlevel
。ntp
腳本應首先執行,然後dovecot
在執行級別 2-5 中執行,而不是執行級別 1。腳本名稱中的序號 ( ) 表示執行順序。因此,這完全取決於您使用的執行級別。S**23**ntp
- 這取決於發行版,但在 Ubuntu 的特定情況下,您可以將腳本添加到執行級別 1 和 2。
有關 Ubuntu 執行級別的Wikipedia文章中的更多資訊
正如其他人所指出的,答案都是關於執行級別,它們基本上是作業系統的操作模式。在 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
符號連結命名
名稱以 an 開頭的符號連結
S
將在相關執行級別啟動,而名稱以開頭的符號連結K
將被終止。rc6.d
請注意,重新啟動執行級別中的所有連結都以K
. 那是因為它們都應該停止重新啟動,並且什麼都不應該啟動。首字母后的數字表示連結腳本的執行順序。數字較小的將在數字較大的之前執行。因此,在您的具體範例中,
S23ntp
將在S24dovecot
.