giám sát thay đổi tập tin + quá trình truy cập vào tập tin


19

Tôi muốn xem những gì đang xảy ra trong các thư mục máy chủ ứng dụng của tôi, tức là những tệp nào được thay đổi theo quy trình x hoặc *.wartệp nào đã được thay đổi (thay thế / tạo) trong x phút cuối.

Có một công cụ trong Linux để giúp đỡ này không?


Xin chào, hãy thử xem hướng dẫn này để thiết lập audd để theo dõi các thư mục và tệp xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux 23/2/2015

1
Tôi đã nhận được câu hỏi này thông qua tìm kiếm của Google, nhưng tôi đã tìm thấy câu trả lời của mình ở đây: unix.stackexchange.com/questions/18844/ chủ
Quentin Skousen

Hãy xem SystemTap. uslessuseofcat.com/?p=281
steve

Câu trả lời:


9

Tùy thuộc vào nhu cầu chính xác của bạn, bạn có thể muốn xem xét các giải pháp inotify và / hoặc FAM / GAMIN .


13

Strace (như đã nêu ở trên) là một cách để kiểm tra hành động của một phần mềm đang chạy được chỉ định.

Một số lệnh như watch find dir/ -mmin 1cũng có thể giúp kiểm tra các thay đổi của phút trước trong một số thư mục.

Tùy thuộc vào chính xác những gì bạn đang tìm kiếm, công cụ inotify có lẽ là một công cụ thương mại khác ở đây.

Ví dụ: inotifywait -mr dir/theo dõi các thay đổi trong thư mục đã cho và ngay lập tức cung cấp cho bạn phản hồi của bất kỳ ứng dụng nào đang cố mở / đọc / ghi / đóng tệp. Tuy nhiên, inotify không cung cấp cho bạn thông tin phản hồi về ứng dụng hoặc quy trình nào đang truy cập tệp - đó là điều mà strace làm được.

Vui lòng biết giám sát cấp hệ thống thường được sử dụng hạn chế cho phần mềm java chạy trong một số môi trường vùng chứa ứng dụng, vì bạn chỉ thấy vùng chứa (ví dụ Tomcat), chứ không phải ứng dụng thực tế (ví dụ .war)) tương tác với hệ thống.


8

Bạn có thể nhận thông tin về các tệp được truy cập theo quy trình của lsof :

 lsof -n -p `pidof your_app`

Và ngược lại, bạn có thể nhận được quá trình ghi / đọc vào một số tệp:

 lsof -n -t file

6

Bạn có thể sử dụng straceđể giám sát tất cả các cuộc gọi hệ thống của một quy trình, bao gồm tất cả quyền truy cập tệp.

Khi bắt đầu một chương trình:

$ strace ./myserver

bạn cũng có thể đính kèm strace vào một quy trình đang chạy thông qua nó:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859

cũng sẽ rất tuyệt khi theo dõi thư mục chứ không phải bởi PID, cảm ơn bạn. btw strace -p PID hoạt động với tôi trong Ubuntu.
Martin V.

0

watch find dir/ -mmin 1 không làm việc cho tôi, những gì đã làm chỉ đơn giản là sao chép và tìm khác biệt:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

Nó khá tốn tài nguyên, nhưng nó cho thấy tất cả các thay đổi giữa ảnh chụp nhanh và diffthời gian.

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.