2012-07-21 33 views
5

tôi biết có lệnh fuser liệt kê các pids của các quá trình, nhưng làm thế nào để bạn liên tục theo dõi quá trình nào đã truy cập tệp? (suy nghĩ hành vi tương tự như đuôi -f tên tập tin)Làm cách nào để theo dõi các quy trình truy cập một tệp cụ thể?

nói rằng có một quá trình ghi vào một tập tin và giải phóng xử lý tại một số khoảng thời gian, do đó rất khó để nắm bắt quá trình đó bằng cách sử dụng bộ nhiệt áp.

+0

Vui lòng kiểm tra http://linux.die.net/man/7/inotify – Jayan

+0

thế nào (không) xâm nhập và (không) tương tác nào bạn cần/có thể đủ khả năng này? @ Cravoori của cuộc thăm dò có thể làm việc nếu khoảng thời gian bạn đề cập đến là đủ dài; thay thế các tập tin với một ống tên và bão hòa bộ đệm của nó sẽ chặn tất cả các nhà văn để bạn có thể xác định chúng tại giải trí nhưng có thể không phải là loại giải pháp bạn đang tìm kiếm; cuối cùng, bạn có thể định nghĩa Linux [kernel tracepoints] của mình (http://netsplit.com/2011/03/07/tracing-on-linux/) để theo dõi quá trình nào đã mở một tệp cụ thể để viết. – vladr

Trả lời

1

bạn có thể xem để thực thi lệnh theo các khoảng thời gian định kỳ. Đồng hồ cũng hỗ trợ cờ khác biệt cho mục đích đánh dấu sự khác biệt về các lần chạy liên tiếp

watch -n 5 'fuser file_name' 
+0

không thực sự làm việc cho tôi ... ghi vào tập tin là khá ngắn gọn và sử dụng đồng hồ đã không bắt nó (đã thử xem -n 1 là tốt) – the1plummie

0

Bạn có thể sử dụng đồng hồ bấm giờ, giả sử bạn đang dùng Linux.

Lệnh này sẽ in tất cả quyền truy cập và sửa đổi trên tệp trong 60 giây, sau đó in số liệu thống kê.

inotifywatch -v -e access -e modify -t 60 filename 

Bạn có thể lấy nguồn inotifywatch như https://github.com/rvoicilas/inotify-tools/wiki

+2

Điều này sẽ hiển thị số lượng truy cập/sửa đổi, nhưng là có một cách để tìm hiểu * quy trình nào * đã truy cập/sửa đổi tệp? – aioobe

Các vấn đề liên quan