Sự khác biệt giữa /etc/init/
và là /etc/init.d/
gì?
Tổng quát hơn, .d
hậu tố có ý nghĩa gì đối với một thư mục?
Sự khác biệt giữa /etc/init/
và là /etc/init.d/
gì?
Tổng quát hơn, .d
hậu tố có ý nghĩa gì đối với một thư mục?
Câu trả lời:
/etc/init.d
chứa các tập lệnh được sử dụng bởi các công cụ khởi động System V (SysVinit). Đây là gói quản lý dịch vụ truyền thống dành cho Linux, chứa init
chương trình (quy trình đầu tiên được chạy khi kernel đã khởi tạo xong) cũng như một số cơ sở hạ tầng để khởi động và dừng dịch vụ và định cấu hình chúng. Cụ thể, tập tin trong /etc/init.d
những kịch bản shell mà đáp ứng start
, stop
, restart
, và (khi được hỗ trợ) reload
lệnh để quản lý một dịch vụ cụ thể. Các tập lệnh này có thể được gọi trực tiếp hoặc (phổ biến nhất) thông qua một số trình kích hoạt khác (thường là sự hiện diện của một liên kết tượng trưng trong /etc/rc?.d/
).
/etc/init
chứa các tệp cấu hình được sử dụng bởi Upstart. Upstart là gói quản lý dịch vụ trẻ do Ubuntu vô địch. Các file trong đề /etc/init
là các tập tin cấu hình nói Upstart như thế nào và khi nào thì start
, stop
, reload
cấu hình, hoặc truy vấn status
của một dịch vụ. Về phần sáng suốt, Ubuntu đang chuyển đổi từ SysVinit sang Upstart, điều này giải thích tại sao nhiều dịch vụ đi kèm với các tập lệnh SysVinit mặc dù các tệp cấu hình Upstart được ưa thích. Trong thực tế, các tập lệnh SysVinit được xử lý bởi một lớp tương thích trong Upstart.
.d
trong tên thư mục thường chỉ ra một thư mục chứa nhiều tệp cấu hình hoặc tập lệnh cho một tình huống cụ thể (ví dụ: /etc/apt/sources.list.d
chứa các tệp được nối để tạo ảo sources.list
; /etc/network/if-up.d
chứa các tập lệnh được thực thi khi mạng i nter f ace được kích hoạt). Cấu trúc này thường được sử dụng khi mỗi mục trong thư mục được cung cấp bởi một nguồn khác nhau, để mỗi gói có thể ký gửi trình cắm riêng mà không phải phân tích một tệp cấu hình duy nhất để tham chiếu chính nó. Trong trường hợp này, điều đó xảy ra rằng, init init, là một tên logic cho thư mục, SysVinit xuất hiện đầu tiên và được sử dụng init.d
và Upstart đã sử dụng đơn giảninit
cho một thư mục có mục đích tương tự (nó sẽ có nhiều dòng chính hơn, và có lẽ ít kiêu ngạo hơn, nếu chúng được sử dụng /etc/upstart.d
thay thế).
¹ không đếm initrd
upstart
hay không sysvinit
. Và trong các phiên bản gần đây, nó cũng có thể systemd
như vậy (vốn không tồn tại cho Ubuntu khi tôi viết câu trả lời của mình). Đó là gói nào cung cấp /sbin/init
( dpkg -S /sbin/init
).
upstart
gói cung cấp / sbin / init (đã chạy dpkg -S /sbin/init
). Nhưng Bitnami đã đặt tập lệnh của nó trong thư mục /etc/init.d. Đây không phải là mâu thuẫn với câu trả lời của bạn cho @AsheeshR ở trên sao? Cảm ơn bạn.
".D" thường được gắn vào tên thư mục để chỉ ra rằng những gì đã từng (hoặc những gì có thể đã được xử lý) bởi một tập lệnh hoặc một tệp cấu hình duy nhất đã được chia thành nhiều tệp để thuận tiện, nhưng nên được bao gồm, hoặc thực hiện, cùng nhau.
Ví dụ, /etc/apache/conf.d/
hoặc/etc/apt/sources.d/
Trong trường hợp điều quan trọng là chúng nên được bao gồm / thực hiện theo thứ tự nào, các tệp trong các thư mục này đôi khi bắt đầu bằng một số, như "00-default" hoặc "80-user" để chúng thực hiện theo đúng thứ tự.
Trong trường hợp của /etc/init.d/
nó, nó chỉ ra rằng các tập lệnh trong "init.d" nên được thực thi. Tuy nhiên, ngày nay, hệ thống init của các hệ điều hành hiện đại có liên quan nhiều hơn thế, nhưng tên thư mục vẫn còn đó.
Như bạn chỉ ra, danh pháp ".d" rất khó hiểu và lạ, và thực sự không có chỗ nào trong bất kỳ hệ thống hiện đại nào - bạn sẽ nhận thấy rằng hầu hết các dịch vụ hiện đại đều có xu hướng bỏ nó.
Lý do thư mục là /etc/init
và không phải /etc/upstart
vì Upstart là tên dự án, nhị phân được cài đặt thực tế vẫn còn /sbin/init
do đó cấu hình của nó có tên không khớp với nhị phân.
rules.d
, Xorg's gần đây xorg.conf.d
, không quá cũ, /etc/profile.d
v.v.
.d
thư mục được nhập với Hệ thống V. Đó là một ký hiệu khó hiểu và cuối cùng có lẽ là ý tưởng của một người đã xâm nhập vào cơ sở mã hóa và không thể rời đi. Ví dụ: nếu bạn nghĩ rằng đócat
là một tên xấu cho nhiệm vụ mà nó thực hiện, hãy tưởng tượng có bao nhiêu tệp trên toàn hệ thống bạn phải chạm để thay đổi nó.