這是一個非常基本的問題,但卻是很難用谷歌搜尋的問題之一。似乎並非/etc/*.d
所有 Linux 核心都支援配置。我想了解,首先,如何正確引用該.d
範例,其次,(可能超出本網站的範圍)其背後的歷史以及為什麼選擇不同的配置策略。
謝謝。
答案1
這顯然是一個非常常見的問題。據我所知,您是 Stack Exchange 上第一個詢問好處和/或歷史的人,而不僅僅是詢問其含義,因此我將直接在這裡回答。
所以.d
只是意味著“目錄”。據我所知,這變成了 sysvinit 和/etc/init.d/
或/etc/rc.d
資料夾的事情。這些始終包含由其他進程解析或調用的單獨設定檔。
至於為什麼要這樣做,有幾個原因:
想像一下,如果您的 init 進程由單一設定檔控制。該文件會變得很大而且難以處理。 Web 服務喜歡
nginx
使用這種範例來鼓勵將各個網站或虛擬主機分離到自己的設定檔中。 (這個資料夾sites-available
在大多數發行版 Nginx 套件中被調用,但它也有一個conf.d
通常適用於所有地方的設定的資料夾)安全分離(某種程度上)。單獨的設定檔允許每個檔案具有不同的權限。如果一個使用者被信任可以修改與他們相關的服務或設置,他們只能修改他們有權存取的文件,而不是授予他們「一個文件統治所有文件」的權利
易於故障排除/重新配置。回到 nginx,假設您需要停用特定的子網域。將每個網站分解為自己的設定檔後,您只需重新命名或刪除該檔案即可,而不必進入單一大檔案並註解掉內容。這同樣適用於 init - 通常在 sysv 系統上,init 腳本透過新增或刪除符號連結來進入和退出服務。這處理運行級別等。無需調用文字編輯器。
所有這些好處都是透過複雜性的微小增加而獲得的。
術語?我不認為這個設計有任何官方的東西,每個人都只是稱它們為“dot d 資料夾”。
一些進一步閱讀:
- Debian 郵件清單:某些目錄和檔案名稱末尾的 .d 實際上代表什麼?
- 類似的問題Unix 和 Linux SE
- 類似的問題詢問Ubuntu