Hệ thống tập tin Proc được cập nhật trên Linux thường xuyên như thế nào?


33

procHệ thống tập tin được cập nhật trên Linux thường xuyên như thế nào ? Có phải là 20 mili giây (lượng tử thời gian) không?


1
+1. Đây là một câu hỏi bài tập về nhà tuyệt vời để hỏi học sinh. Cảm ơn.
Jonathan Ben-Avraham

5
@ JonathanBen-Avraham Vui lòng hỏi về meta xem cộng đồng có cho phép bạn tạo thẻ "bài tập về nhà tuyệt vời" không ... 8-)
Hauke ​​Laging

Câu trả lời:


46

Thông tin mà bạn đọc từ hệ thống tập tin Proc không được lưu trữ trên bất kỳ phương tiện nào (thậm chí không có trong RAM), vì vậy không có gì để cập nhật.

Mục đích của hệ thống tập tin proc là cho phép các chương trình không gian người dùng để có được hoặc bộ kernel dữ liệu bằng cách sử dụng ngữ nghĩa đơn giản và hệ thống tập tin quen thuộc ( open, close, read, write, lseek), mặc dù các dữ liệu được đọc hoặc viết không nằm trên phương tiện truyền thông nào. Quyết định thiết kế này được coi là tốt hơn (ví dụ như con người có thể đọc được và dễ dàng viết kịch bản) để lấy và thiết lập dữ liệu có định dạng không thể được chỉ định trước hơn là thực hiện một cái gì đó như OID được mã hóa ASN1, cũng sẽ hoạt động tốt.

Dữ liệu bạn nhìn thấy khi bạn đọc từ hệ thống tập tin Proc được tạo nhanh chóng khi bạn đọc từ đầu tập tin. Nghĩa là, việc đọc làm cho dữ liệu được tạo bởi hàm gọi lại kernel dành riêng cho tệp bạn đang đọc. Thực hiện lseekbắt đầu tập tin và đọc lại gây ra một cuộc gọi khác đến cuộc gọi lại tạo ra dữ liệu một lần nữa. Tương tự, khi bạn ghi vào một tệp có thể ghi trong hệ thống tệp Proc, một hàm gọi lại được gọi để phân tích cú pháp đầu vào và đặt các biến nhân. Dữ liệu đầu vào ở dạng thô không được lưu trữ.

Trên đây chỉ là một cách nói dài dòng hơn một chút để nói những gì mà Hauke ​​Laging nói rất ngắn gọn. Tôi đề nghị bạn chấp nhận câu trả lời của anh ấy.


Nếu bạn cần bằng chứng rằng câu trả lời này là đúng, hãy thử chạy inotify trên một "tệp" hoặc thư mục trong / Proc (hoặc / sys cho vấn đề đó) ... nó quá tệ, nó sẽ khiến udev hoàn toàn không cần thiết nếu bạn chỉ có thể nói một quy trình inotify đơn giản để chạy x khi có thứ gì đó xuất hiện trong y
technosaurus

24

Nó được cập nhật trên mọi truy cập. Bạn thấy trạng thái của kernel trong thời điểm đó. Đó là lý do tại sao kích thước hiển thị cho "tệp" không phải là kích thước thật. Kích thước thực có thể thay đổi và được xác định thời điểm bạn truy cập tệp.

Bạn có thể nói, nó có thể không được cập nhật trong nhiều ngày. Nếu bạn không nhìn vào nó. :-)


10
+1. Nó giống như câu nói: "Nếu một cái cây rơi trong rừng và không có ai xung quanh để nghe nó, nó có phát ra âm thanh không?", Tức là "Nếu có một hệ thống tập tin Proc và không ai đọc nó, thì nó có tồn tại không ? ".
Jonathan Ben-Avraham

@ JonathanBen-Avraham Bạn có thể nói rằng về mọi FS, phải không? :-) Nhưng hãy nhớ rằng có nhiều quyền truy cập vào Proc hơn người ta đoán. Nhận xét nó trong fstab, khởi động lại và tất cả phá vỡ địa ngục ...
Hauke ​​Laging

Ý tôi là dữ liệu trong một hệ thống tệp được hỗ trợ phương tiện tồn tại ngay cả khi không ai đọc nó tại bất kỳ thời điểm cụ thể nào. Nó không tồn tại vào thời điểm đọc như Proc và sys. Bạn nói đúng, Proc có rất nhiều độc giả. Tuy nhiên, sys là một hệ thống tệp tương tự mà bạn có thể nhận xét từ fstab, ít nhất là trên các hệ thống nhỏ hơn và vẫn chạy Ok. Chúc mừng.
Jonathan Ben-Avraham

4
Vậy con mèo có chết hay không? Hay xem no va bạn se thây. Jim chết rồi. Tội nghiệp con mèo.
0x7c0

@HaukeLaging Tôi không có /proc/trong tập tin fstab của mình ☹
Hi-Angel
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.