Trong linux, tại sao các thư mục cho các tập tin cấu hình luôn được đặt tên *.d?
Nói
/etc/init.d/etc/grub.d/etc/apparmor.d
Trong linux, tại sao các thư mục cho các tập tin cấu hình luôn được đặt tên *.d?
Nói
/etc/init.d/etc/grub.d/etc/apparmor.dCâu trả lời:
Các .dviết tắt của thư mục. Đó là một quy ước để phân biệt cấu hình dựa trên thư mục với một cấu hình dựa trên một tệp cấu hình duy nhất. Thường thì bạn sẽ có cả hai trong một số khả năng, ví dụ /etc/logrotate.confvà /etc/logrotate.d/.
Nó cũng thường là trường hợp tất cả các tệp (được đặt tên hợp lý) trong một thư mục như vậy được tự động kết hợp thành một cấu hình duy nhất. Các gói sau đó có thể cài đặt các tệp vào một thư mục như vậy và chúng sẽ được sử dụng tự động. Một lần nữa, /etc/logrotate.d/là một ví dụ tốt. Theo constrast, một thư mục chứa các tệp cấu hình không kết thúc .dcó lẽ chỉ chứa đối chiếu ngẫu nhiên các tệp cấu hình thuộc cùng một gói và bạn không thể suy ra bất cứ điều gì về cách chúng được xử lý, ví dụ /etc/zsh/.
Để mở rộng một chút về câu trả lời của Peter, mẫu .d này cho phép thêm và xóa các tệp cấu hình đơn giản hơn: đối với chương trình .d đã cho, quản trị viên có thể chỉ cần sao chép hoặc xóa tệp vào thư mục .d mà không cần phải chỉnh sửa một tập tin cấu hình hiện có.
Ví dụ: nếu bạn muốn thêm một công việc định kỳ vào hệ thống của mình, bạn có thể chỉnh sửa / etc / crontab với công việc được lên lịch mới bằng trình soạn thảo văn bản yêu thích của bạn. Điều này tốt cho một máy chủ hoặc một số ít máy chủ, nhưng hãy thử làm điều đó trên 100 máy chủ nếu bạn làm việc trong môi trường trung tâm dữ liệu / đám mây. Trong trường hợp sau, bạn có thể sử dụng một cái gì đó như sed với tệp tạm thời hoặc một công cụ như ex để ghi tệp vào vị trí, nhưng có một chút rủi ro ở đây nếu bạn không thực hiện đúng lệnh của mình. Thật vậy, tôi đã thấy các tập tin cấu hình bị loại bỏ hoàn toàn do lỗi chính tả trong các lệnh chỉnh sửa này.
Bây giờ hãy so sánh điều đó với việc đặt một tệp với các công việc được lên lịch của bạn vào /etc/cron.d. Bạn chỉ cần sao chép tệp vào nó và lần sau khi cron chạy (thường là mỗi phút), nó sẽ thấy tệp mới và sẽ nguồn / xử lý nó cho phù hợp. Điều này thật tuyệt vời khi Peter tuyên bố nếu bạn muốn cuộn các gói của riêng mình: tệp /etc/cron.d chỉ là một tệp khác trong kho lưu trữ gói được cài đặt. Khi xóa gói, tệp cron.d sẽ bị xóa và cron của bạn không còn chạy nữa.
Cuối cùng, mọi chương trình có thư mục .d có thể có cách triển khai riêng cho đến khi các tệp có nguồn gốc, chẳng hạn như bao gồm thứ tự và cấu hình ghi đè. Vì vậy, bất cứ khi nào bạn quyết định đặt một tệp trong thư mục .d, hãy luôn xác minh rằng nó làm những gì bạn muốn và đừng cho rằng nó hoạt động giống như đối với một chương trình khác có thư mục .d.