/ Etc / mtab trong Linux là gì?


Câu trả lời:


51
% tệp / etc / mtab
/ etc / mtab: liên kết tượng trưng đến ../proc/elf/mounts
% tập tin / Proc / mount
/ Proc / mounts: liên kết tượng trưng đến tự / mount
%

/etc/mtablà một cơ chế tương thích. Nhiều thập kỷ trước, Unix không có lệnh gọi hệ thống để đọc thông tin gắn kết hiện có. Thay vào đó, các chương trình gắn hệ thống tập tin được dự kiến ​​sẽ hợp tác và tự nguyện duy trì một bảng trong /etc/mtabđó được gắn ở đâu.

Vì lý do rõ ràng, đây không phải là một cơ chế lý tưởng.

Linux đã đạt được khái niệm về một "Procfs" và một trong những thứ mà nó thu được là một phiên bản duy trì kernel của bảng này, dưới dạng một mountstệp giả thông thường. "Cuộc gọi hệ thống" để đọc thông tin gắn kết ra khỏi nhân đã trở thành một chuỗi mở-đọc-đóng đối với tệp đó, sau đó phân tích kết quả từ dạng có thể đọc được của con người sang dạng có thể đọc được bằng máy (một cái gì đó có một số điểm tinh tế, như bạn có thể thấy từ các báo cáo lỗi từ hơn một hai tuần trước).

/etc/mtabdo đó, đã trở thành một liên kết tượng trưng /proc/mounts, cho phép các chương trình đã cố gắng đọc tên bảng đó từ tệp đó, mà các chương trình gắn và không kết nối các hệ thống tệp không còn phải tự làm bất cứ điều gì để cập nhật. (Tuy nhiên, một số trong số chúng vẫn sẽ /etc/mtablà một tệp thông thường có thể ghi. Và có một vài trường hợp góc mà thông tin được chuẩn hóa trong mountsđó thiếu tất cả các công cụ không phải là kernel không phải là điều cần thiết; mặc dù chúng không vượt trội những vấn đề chung với /etc/mtab.)

Mỗi quá trình hiện nay có thể có cái nhìn cá nhân riêng của mình về những gì đang gắn, và có kết quả là giờ đây từng mountsfile cho mỗi quá trình trong procfs, bảng riêng của mỗi quá trình đang tiếp cận với nó thông qua các selfliên kết tượng trưng như self/mounts, và /proc/mountscũng bây giờ là một khả năng tương thích cơ chế. (Điều thú vị là, cả quy trình mountsvà định dạng mountsđều không được ghi lại trong tài liệu Linux hiện tại, mặc dù mountinfotệp giả thông thường tương tự là.)

SunOS / Solaris có cơ chế tương tự. Các /etc/mnttabtập tin thực sự là một single-file hệ thống tập tin, và ngoài việc đọc bàn, thông qua một bộ mô tả tập tin mở rộng cho tập tin đó, với các read()cuộc gọi hệ thống, người ta có thể xem cho gắn những thay đổi quan điểm với poll()và có được mảnh thêm thông tin khác nhau với ioctl().

Trong HP-UX, /etc/mnttabtương tự như tên của tệp, nhưng cho đến phiên bản 11, nó vẫn là một tệp thông thường có nội dung được duy trì liên tục bởi các chương trình tiện ích hệ thống.

AIX không xuất bảng văn bản có thể đọc được mà các chương trình phải phân tích cú pháp và không có tệp tương đương. Các BSD, tương tự, có các cuộc gọi hệ thống chính thức, getfsstat()trên FreeBSD và OpenBSD, cho các chương trình để lấy bảng gắn kết từ hạt nhân ở dạng có thể đọc được bằng máy mà không cần xử lý thông qua hình thức trung gian có thể đọc được của con người.

đọc thêm


Để bổ sung cho nhận xét của tôi trong câu hỏi ở đây là mtab(5)từ ngày xưa: man.cat-v.org/unix_8th/5/mtab .
Weijun Zhou

2
không chỉ /proc/mounts, mà /proc/self/mountsbản thân nó còn là một cơ chế tương thích; nó chỉ hiển thị một tập hợp con của thông tin có sẵn trong /proc/self/mountinfo. Định dạng của /proc/self/mountstài liệu này proc(5)giống hệt nhưfstab(5)
mosvy

mặc dù phải thừa nhận, fstab (5) chỉ nói về không gian được thay thế bằng lối thoát bát phân, trong khi đó là khoảng trắng, tab, dòng mới và dấu gạch chéo ngược
mosvy

Tôi biết tệp giả và tệp thông thường, nhưng tệp giả thông thường là gì?
gerrit

@gerrit đó là một tệp thông thường có kích thước 0 nhưng vẫn chứa dữ liệu ;-)
mosvy

12

Theo man mount:

Các chương trình gắn kết và umount theo truyền thống duy trì một danh sách các hệ thống tệp hiện được gắn kết trong tệp / etc / mtab. Tệp mtab thực này vẫn được hỗ trợ, nhưng trên các hệ thống Linux hiện tại, tốt hơn là đặt nó thành một liên kết tượng trưng đến / Proc / mounts, vì một tệp mtab thông thường được duy trì trong không gian người dùng không thể hoạt động đáng tin cậy với không gian tên, bộ chứa và các tính năng nâng cao khác của Linux.

Khi lắp mà không ghi vào /etc/mtab:

-n, --no-mtab

Gắn mà không cần viết trong / etc / mtab. Điều này là cần thiết, ví dụ khi / etc nằm trong hệ thống tệp chỉ đọc.

Nhiều sắc thái hơn được đưa ra trong trang hướng dẫn.

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.