/etc 中的 rc0.d,rc1.d,... 目錄

/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

問題:

  1. 多個“rc”目錄的用途是什麼?
  2. 為什麼 Ubuntu 將 和 的副本安裝dovecot到除和ntp之外的所有目錄中?rc0.drc6.d
  3. 如果像上面那樣多次指定它們,那麼它們實際上會被執行多次嗎?
  4. 從上面看得出來啟動時按照什麼順序dovecot執行ntp嗎?
  5. 告訴 Ubuntu在啟動ntp之前始終執行的正確方法是什麼?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

符號連結命名

名稱以 an 開頭的符號連結S將在相關運行層級啟動,而名稱以 開頭的符號連結K將被終止。請注意,重啟運行等級中的所有連結rc6.d均以 開頭K。那是因為它們都應該停止以重新啟動,並且不應啟動任何內容。

首字母後面的數字表示連結腳本的運行順序。數字較小的將先於數字較大的運行。因此,在您的具體範例中,S23ntp將運行(在本例中啟動) S24dovecot

答案2

  1. 這些是runlevels 和 are 是大多數 *NIX 系統使用的 System V 式啟動(基於 - 的系統除外systemd)。當啟動核心/用戶時,runlevel它決定應該運行什麼並只執行那個runlevel。這意味著runlevel您可以使用不同的程序集啟動。也有用於停止和重新啟動的運行級別,但由於您專注於啟動部分,所以我們現在忽略它們。
  2. 由於在啟動時只執行一個runlevel,因此某些程式應該/想要在不同的runlevels 處以相同或不同的順序使用不同或相同的參數啟動/停止(並非所有運行等級在所有作業系統中都相同)。但是 Ubuntu 從 2 複製了運行等級 3-5,這就是為什麼它們是相同的。
  3. No. runlevels 僅在啟動時或變更時執行一次runlevel
  4. ntp腳本應該先dovecot在運行等級 2-5 中執行,而不是運行等級 1 。因此,這完全取決於您使用的運行等級。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)第四點就是這樣。

相關內容