POSIX có giới hạn số lượng thư mục trong gốc os không?


12

Tôi đang cố gắng học tiêu chuẩn POSIX. Khi sử dụng Unix, tôi đã /bin, /etc, /dev, /media, và thường /opt, nhưng mà chuẩn hoặc lên đến thực hiện spec của bạn? Có thể có nhiều thư mục trong thư mục gốc, hoặc nó bị giới hạn bởi tiêu chuẩn?


3
POSIX không chạm vào khu vực này.
Thomas Dickey

Câu trả lời:


17

Theo tiêu chuẩn được công bố của The Open Group , các thư mục bắt buộc duy nhất là:

  • /
  • /dev, Trong đó có console, nulltty
  • /tmp, đảm bảo có thể ghi nhưng không nhất thiết phải bảo quản.

Linux Foundation duy trì Tiêu chuẩn phân cấp hệ thống tập tin (FHS) mở rộng điều này để bao gồm các thư mục bạn thường thấy trên hệ thống Linux:

  • /bin: Các nhị phân lệnh người dùng thiết yếu
  • /boot: Tệp tĩnh của bộ tải khởi động
  • /dev: Tập tin thiết bị
  • /etc: Cấu hình hệ thống dành riêng cho máy chủ
  • /home: Thư mục nhà người dùng (tùy chọn)
  • /lib: Thư viện chia sẻ cần thiết và mô-đun hạt nhân
  • /lib<qual>: Thư viện chia sẻ định dạng thay thế cần thiết (tùy chọn)
  • /media: Điểm gắn cho phương tiện di động
  • /mnt: Điểm gắn kết cho hệ thống tệp được gắn tạm thời
  • /opt: Gói phần mềm ứng dụng bổ trợ
  • /root: Thư mục chính cho người dùng root (tùy chọn)
  • /run: Dữ liệu biến thời gian chạy
  • /sbin: Hệ thống nhị phân
  • /srv: Dữ liệu cho các dịch vụ được cung cấp bởi hệ thống này
  • /tmp: Hồ sơ tạm thời
  • Cũng như /usrthứ bậc và /varthứ bậc

FHS được thiết kế càng chung chung càng tốt, cho phép kết hợp trong bất kỳ hệ thống UNIX nào. Các thư mục bổ sung có khả năng tồn tại trong bất kỳ hệ thống hợp lý nào, nhưng điều này không bắt buộc bởi POSIX.

Tuy nhiên, lưu ý rằng Nhóm Mở cũng nói rằng

Các ứng dụng tuân thủ nghiêm ngặt sẽ không đảm nhận khả năng tạo tệp trong bất kỳ thư mục nào, trừ khi được chỉ định dưới đây.

Vì các thư mục thực sự chỉ là các tệp, điều này ngụ ý rằng một ứng dụng tuân thủ nghiêm ngặt sẽ không tạo ra bất kỳ tệp hoặc thư mục nào ở cấp gốc. Do đó, POSIX không nhất thiết giới hạn những gì một bản phân phối có thể đặt ở cấp gốc, nhưng dường như nói rằng một ứng dụng phù hợp với đặc điểm kỹ thuật của nó không thể cho rằng nó sẽ có thể.


5
Câu hỏi đặt ra là không thư mục là tiêu chuẩn , nhưng hỏi nếu có một giới hạn . POSIX không trả lời câu hỏi đó.
Thomas Dickey

Nó thêm một ý kiến ​​mà không chỉ ra một trích dẫn từ POSIX.
Thomas Dickey

Đoạn cuối cùng là những gì tôi đã đề cập: "dường như không nêu". POSIX tránh đề cập đến một giới hạn trong lĩnh vực này, tập trung vào tính phổ biến hơn là sự khác biệt.
Thomas Dickey

1
Cảm ơn Fox. Câu trả lời của bạn là thông tin tôi đang tìm kiếm.
Niklas

13

Trong 10.1 Cấu trúc thư mục và tệp , POSIX liệt kê các thư mục phải tồn tại. Nhưng nó chỉ định không giới hạn số lượng thư mục khác có thể tồn tại ở cấp độ gốc của hệ thống tập tin.

Đối với vấn đề đó, nó dường như không đặt giới hạn về kích thước của các thư mục khác.

Sự chú ý của POSIX trong lĩnh vực này tập trung vào tính phổ biến hơn là sự khác biệt.


Vì trên hệ thống * nix có khả năng mọi thư mục (bao gồm /) có thể là thư mục gốc, sẽ khá ngớ ngẩn khi áp đặt giới hạn trên cho số lượng mục trong thư mục gốc. /không đặc biệt về vấn đề này, do đó, theo sau nó sẽ khá ngớ ngẩn khi áp đặt giới hạn trên cho số lượng mục /cụ thể.
một CVn

8

Không có giới hạn về số lượng mục trong một thư mục, trong POSIX hoặc trong các triển khai Unix điển hình. Có thể có một giới hạn gián tiếp cho số lượng thư mục con, đó là số lượng liên kết cứng tối đa (mỗi mục ..nhập của thư mục con là một liên kết cứng đến thư mục); đó là 2 16 đối với nhiều hệ thống tệp phổ biến, giới hạn thư mục ở 65533 thư mục con (ít nhất là đối với các hệ thống tệp lưu trữ ..mục nhập rõ ràng). Bạn sẽ bắt đầu đạt hiệu suất kém trước đó. Theo POSIX, việc triển khai chỉ được phép hỗ trợ 8 liên kết cứng trên một tệp ( _POSIX_LINK_MAX), nhưng không có triển khai thực tế nào bị giới hạn ở 6 thư mục con. Và dù sao, trên nhiều hệ thống tập tin, bao gồm ext4, số lượng liên kết cứng không được duy trì cho.. các mục nhập, vì vậy giới hạn duy nhất là có bao nhiêu dung lượng hoặc bao nhiêu nút có sẵn trên hệ thống tệp.

POSIX không nói nhiều về việc tổ chức các tệp trên hệ thống. Nó chỉ bắt buộc sự tồn tại của một vài tập tin . Các mục bắt buộc duy nhất trong thư mục gốc là /dev/tmp. Mục Unix thói quen khác như /usr, /var, /bin, /etc, /lib, /home, vv là Unix ước mà không được hệ thống hóa bởi POSIX.

Trên Linux, FHS mã hóa các tác phẩm kinh điển và một vài thứ nữa. Hầu hết các bản phân phối Linux dính vào các mục FHS. Các hệ thống Unix khác thường có hầu hết các mục giống nhau, có thể có một vài khác biệt, nhưng số lượng là như nhau.

Quản trị viên hệ thống có thể tạo thêm, mặc dù điều này không được khuyến khích: có những nơi được xác định rõ ràng cho hầu hết mọi thứ (phần mềm nằm dưới /usrhoặc /opt, dữ liệu hệ thống nằm dưới /var, dữ liệu người dùng nằm dưới /net, điểm gắn kết /mediahoặc /mnt, v.v.), vì vậy hiếm khi bất kỳ lý do tốt để tạo thư mục mới ở cấp cao nhất.


Điều này LAF không đúng. Hầu hết các hệ thống tập tin "hợp lý" có số lượng thư mục con tối đa cho mỗi thư mục hoặc số lượng nút tối đa trên mỗi thiết bị. Tuy nhiên, nó thường rất lớn so với số lượng thư mục bạn có thể nhìn thấy trong thư mục gốc của ổ đĩa.
Kevin

@Kevin Ồ, điểm hay, trên các hệ thống tập tin phổ biến trước tiên bạn đạt số lượng liên kết cứng tối đa và có thể thấp tới 16 bit.
Gilles 'SO- ngừng trở nên xấu xa'

@Kevin Mặc dù đây không phải là trường hợp trên ext4, nhưng dường như không có giới hạn về số lượng thư mục con khác ngoài không gian có sẵn (khối hoặc inodes). Bạn có nghĩ đến một số giới hạn khác về số lượng thư mục con trên mỗi thư mục không?
Gilles 'SO- ngừng trở nên xấu xa'

Một hệ thống tập tin được thiết kế đúng sẽ không tạo liên kết cứng đến các mục thư mục .. Trong một hệ thống tập tin được thiết kế đúng, số lượng liên kết của một thư mục là 1 trừ khi có các liên kết cứng được tạo thủ công.
schily

1
Không, không có giới hạn nào như vậy đối với hệ thống tệp tuân thủ POSIX 100%. Như đã đề cập, POSIX không yêu cầu. và .. để được liên kết cứng đến các thư mục khác. Nếu có, đây là một chi tiết triển khai là kết quả của các vụ hack được giới thiệu trong hệ thống tập tin V7. Có các hệ thống tập tin tuân thủ POSIX khác hoạt động hoàn toàn khác nhau.
schily

2

Không giống như FAT, các hệ thống tệp được UNIX sử dụng không có giới hạn kích thước đặc biệt trên thư mục gốc, nhưng khi phân vùng đầy, bạn sẽ không thể thêm được nữa.

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.