Tôi đã thử nó tracefile
. Đối với tôi nó đã cho ít trận đấu hơn nhiều so với của tôi strace ... | sed ... | sort -u
. Tôi thậm chí thêm -s256
vào strace(1)
dòng lệnh nhưng nó không giúp được gì nhiều ...
Sau đó, tôi đã thử nó loggedfs
. Đầu tiên nó thất bại vì tôi không có quyền truy cập đọc / ghi vào thư mục mà tôi đã cố gắng đăng nhập với nó. Sau khi làm chmod 755 tạm thời, tôi đã nhận được một số lượt truy cập ...
Nhưng, đối với tôi, làm như sau có vẻ hiệu quả nhất:
inotifywait -m -r -e OPEN /path/to/traced/directory
Và sau đó xử lý hậu quả đầu ra sau khi chạy quá trình quan tâm.
Điều này không bắt được các tập tin truy cập bên ngoài của
thư mục theo dõi cũng như không biết liệu một số quy trình khác có truy cập cùng một cây thư mục hay không, nhưng trong nhiều trường hợp, đây là công cụ đủ tốt để hoàn thành công việc.
EDIT: inotifywait không bắt được quyền truy cập symlink (chỉ các mục tiêu sau khi symlink được giải quyết). Tôi đã bị ảnh hưởng bởi điều này khi tôi lưu trữ các thư viện được truy cập bởi một chương trình để sử dụng trong tương lai. Đã sử dụng một số hack toàn cầu perl bổ sung để chọn các liên kết tượng trưng dọc theo các thư viện được thông báo để hoàn thành công việc trong một trường hợp cụ thể đó.
EDIT2: ít nhất là khi inotifying tập tin và liên kết tượng trưng bản thân từ dòng lệnh inotifywait (ví dụ inotifywait -m file symlink
hay inotifywait symlink file
) đầu ra sẽ hiển thị tiếp cận với cái nào là đầu tiên trong dòng lệnh (không phân biệt đó, file
của symlink
được truy cập). inotifywait không hỗ trợ IN_DONT_FOLLOW - điều mà khi tôi thử lập trình chỉ khiến người ta thấy quyền truy cập file
(có thể hoặc không, là điều người ta mong đợi ...) bất kể thứ tự trong dòng lệnh
strace
, tôi cho rằng bạn đặc biệt quan tâm đến Linux. Chính xác?