Tại sao các tập lệnh init.d trong vv?


16

Tôi tiếp tục đọc / nghe đó /etclà cho các tập tin cấu hình hệ thống. Ai đó có thể giải thích / cho tôi một số trực giác cho lý do tại sao các kịch bản mà start / stop / khởi động lại chương trình khác nhau thường trong /etcthay vì /varhay /usrhoặc một cái gì đó tương tự?


Mặc dù câu hỏi có thể hơi thiên về ý kiến, tôi nghĩ câu hỏi có thể được trả lời bằng thực tế.
Julie Pelletier

Là những câu hỏi về lý do lịch sử "dựa trên quan điểm"? Nhìn lại, có khả năng một số lý do thực tế cho lý do tại sao một cái gì đó xảy ra. Ngay cả khi đó chỉ là "bởi vì ông Grandhacker đã làm như vậy", nó không phụ thuộc vào ý kiến ​​của bất cứ ai trả lời câu hỏi bây giờ.
ilkkachu

Ngoại trừ câu hỏi cho biết "tại sao họ phải như vậy", đó là một kích hoạt cho "các cuộc thảo luận đầy màu sắc" dựa trên ý kiến. Chỉnh sửa một chút để làm cho nó ít hơn như vậy. @Adam, hãy hoàn nguyên nếu bạn cảm thấy điều này trái với ý định của bạn.
ilkkachu

1
Bởi vì khi nào và làm thế nào các dịch vụ bắt đầu là cấu hình hệ thống.
OrangeDog

1
Đối với nho khô cuồng loạn.
TMN

Câu trả lời:


22

Ban đầu (cả về mặt lịch sử và trong quá trình khởi động ...), /etclà một phần của /(hệ thống tệp được gắn đầu tiên), trong khi /usrkhông (cho đến khi đĩa lớn). /vargiữ dữ liệu tạm thời , trong khi các tập lệnh này không phải là tạm thời.

Điều đó không đơn giản, nhưng nó đã bắt đầu theo cách đó và có rất ít lý do để làm lại toàn bộ bố cục thư mục.


1
Như bạn nói, nó không đơn giản. Các hệ thống UNIX thương mại khác nhau có các tệp thực thi nhị phân thực tế /etctại một thời điểm nào đó. Ít nhất init.dlà chủ yếu các kịch bản trên các hệ thống hiện đại. Nhưng nó vẫn không thể /etcgắn kết chỉ đọc.
Satō Katsura

2
@SatoKatsura: Với sự ra đời của các ngôn ngữ được biên dịch có cảm giác như ngôn ngữ kịch bản, tôi đã bắt đầu nhận thấy một số tập lệnh / etc (thậm chí là tập lệnh init) được thay thế bằng chương trình đi - thực thi nhị phân.
slebetman

Cũng rất thú vị khi lưu ý rằng các thay thế sysVinit hiện đại thực sự sử dụng các tệp cấu hình đơn giản thay vì các tập lệnh đầy đủ, do đó /etccó thể sẽ dọn sạch các công cụ không cấu hình.
GnP

/tmpgiữ dữ liệu tạm thời. /vargiữ dữ liệu biến
Neil McGuigan

14

Các kịch bản khởi động thực sự là một phần quan trọng của cấu hình hệ thống.

Mặc dù quá trình khởi động ít tùy chỉnh hơn so với 15-30 năm trước và hầu hết cấu hình khởi động đã được tự động hóa, tất cả các lựa chọn quản trị xác định trình tự khởi động vẫn xuất hiện /etc.

Điều này thể hiện một cách rất tập trung để duy trì và sao lưu cấu hình của hệ thống. Trên hầu hết các hệ thống, sao lưu /etclà đủ để cho phép cài đặt lại toàn bộ hệ thống một cách dễ dàng. Bạn chỉ cần thực hiện cài đặt lại đầy đủ với các chương trình cần thiết và khôi phục /etcbản sao lưu của bạn .


3

M. Dickey và M. Pelletier đều đã mua vào cơ sở của câu hỏi. Nhưng cơ sở là sai.

Nếu bạn đã đọc " /etcdành cho các tệp cấu hình hệ thống" thì bạn đã đọc thứ gì đó không vẽ toàn bộ hình ảnh cho bạn. Nhìn vào cái tên Đó là "et cetera". Mọi người đã đặt mọi thứ vào thanh bồn rửa trong bếp lúc này hay lúc khác.

  • /etc/rc đã từng (và trên một số hệ thống vẫn là) chương trình chạy để khởi động mọi thứ.
  • Tệp hình ảnh chương trình cho quá trình người dùng đầu tiên là /etc/inittại một thời điểm (ví dụ, trong XENIX, rất lâu trước khi bắt đầu thậm chí là một ý tưởng).
  • /etc/profile, /etc/zprofilevà tất cả những thứ còn lại chắc chắn là kịch bản.
  • OpenBSD /etc/netstartlà một chương trình; như của FreeBSD /etc/ipfw.rules.
  • FreeBSD cũng vậy /etc/rc.suspend/etc/rc.resume; và thực sự /etc/rc.sendmail, /etc/rc.bsdextended/etc/rc.firewall.

Tương tự, nếu bạn đã đọc rằng "các tập lệnh khởi động / dừng / khởi động lại các chương trình khác nhau thường /etcthay vì /varhoặc /usrhoặc một cái gì đó tương tự" thì bạn đã đọc một cái gì đó khác không vẽ ra bức tranh đầy đủ cho bạn.

  • Quy ước FreeBSD / PC-BSD là có một /usr/local/etc/rc.d/thư mục cho các rctập lệnh hệ điều hành không hoạt động . rckịch bản cho tất cả các loại điều sống ở đó chứ không phải dưới /etc.
  • Bạn sẽ tìm thấy người daemontools-gia đình đặt một số điều quản lý dịch vụ vào /var/sv, /var/servicevà những nơi tương tự. (Ví dụ, bộ công cụ nosh của tôi cung cấp gần một nghìn gói dịch vụ /var/sv. Gói dịch vụ duy nhất đi vào /etc/service-bundleslà từ 60 đến 70 cần thiết trước khi /usrđược gắn, bao gồm các dịch vụ gắn kết và kiểm tra /usrnếu cần.)
  • Các quy ước hệ điều hành systemd có một số nội dung sống /etc/systemd, một số nội dung /run/systemd, một số nội dung /usr/lib/systemdvà ( mặc dù nó không được ghi nhận vì lý do không thể áp dụng ) một số nội dung /usr/local/lib/systemd. Một lần nữa, phần lớn "những thứ để bắt đầu / dừng dịch vụ" sẽ được tìm thấy bên dưới /usrchứ không phải bên dưới /etc.

2

Bạn sẽ làm tốt để xem lại Tiêu chuẩn phân cấp hệ thống tập tin . Nó sẽ giải thích (chi tiết) chính xác lý do tại sao, nhưng nó cũng chứa thông tin như vậy trên nhiều con đường khác mà bạn có thể tò mò.

Tiêu chuẩn hệ thống tập tin đã được thiết kế để được sử dụng bởi các nhà phát triển phân phối Unix, nhà phát triển gói và người triển khai hệ thống. Tuy nhiên, nó chủ yếu nhằm mục đích tham khảo và không phải là hướng dẫn về cách quản lý hệ thống tập tin hoặc hệ thống tập tin Unix.


Nó không giải thích nền tảng lịch sử.
Thorbjørn Ravn Andersen

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.