2013-05-05 15 views
7

Trong Linux để đọc Sự kiện hệ thống tệp, hầu hết chúng ta sử dụng Inotify vốn thực sự là một Good One. Nhưng nó có những hạn chế của nó. Tôi phải theo dõi tất cả các thư mục tôi có để xem và nhận được một mô tả inotify cho mỗi và mọi thư mục. Hãy nói rằng tôi muốn theo dõi toàn bộ hệ thống của tôi và nó có khoảng 10 triệu thư mục. Việc liệt kê và xếp hàng chúng cho chính bản thân API inotify sẽ mất hàng giờ. Nó cũng sẽ ăn nhiều bộ nhớ. Và tôi chắc chắn không thể xem các thư mục nhiều hơn chỉ định trong max_user_watches trong /etc/syscntl.conf hoặc/proc/sys/fs/inotify/max_user_watches. Chúng tôi biết rằng mỗi và mọi sự kiện hệ thống tập tin được giám sát bởi hạt nhân và chúng tôi sử dụng API inotify để đăng ký cho một sửa đổi thư mục nhất định. Nhưng làm thế nào để tôi đọc các sự kiện fs trực tiếp từ hạt nhân mà không có API ..? [Trong Mac OS X, tôi có thể đọc từ/dev/fsevents, tương tự như vậy nếu tôi có thể đọc từ/proc hoặc một cái gì đó như thế, nó sẽ là tuyệt vời]. Tôi đã sẵn sàng để viết một mô-đun hạt nhân, nhưng xin vui lòng chia sẻ một số ánh sáng về điều này.Đọc các sự kiện hệ thống tệp từ hạt nhân Linux mà không có Inotify

+0

Đây là một câu hỏi rất hữu ích. Tôi cũng đã cố gắng để thực hiện một cái gì đó tương tự như trên một bản phân phối Linux, nhưng đã không thành công. Có lẽ 'lsof' sẽ đáp ứng nhu cầu của bạn. – psibar

Trả lời