Cách theo dõi tập tin nào được mở


9

Có công cụ nào để theo dõi quá trình nào mở tệp nào trên hệ thống để bạn có thể theo dõi quá trình nào tiếp tục chạm vào một tệp cụ thể không?

Lsof có thể tìm hiểu xem bạn có chạy nó trong khi tiến trình mở tệp hay không, nhưng nếu đó là một quá trình tồn tại ngắn, cứ sau một thời gian, bạn không thể bắt nó với lsof. Cần một cái gì đó sử dụng theo dõi kernel.


Bạn đã kiểm tra inotify? Xem câu trả lời của @ Kees tại đây, ví dụ: askubfox.com/questions/25442/, Có một vài liên kết về câu trả lời của tôi ở đây: Askubfox.com/questions/29566/
belacqua

@jgbelacua không ai trong số đó là những gì tôi đang tìm kiếm. Inotify có thể cho bạn biết khi nào một tệp đã cho được chạm vào và lsof có thể cho bạn biết tệp nào đã mở hoặc quá trình nào mở tệp, nhưng tôi cần tìm ra quy trình nào tiếp tục chạm vào tệp, sau đó đóng tệp trước khi tôi có thể chạy lsof để bắt nó
psusi

Câu trả lời:


7

Bạn có thể có thể sử dụng hệ thống kiểm toán cho điều đó. Nó hơi nặng, nhưng một cái gì đó như thế này sẽ hoạt động (trong /etc/audit/audit.rules):

# delete all other rules
-D

# watch the file in question
-w /path/to/file -p rwxa

và sau đó tôi nghĩ rằng bạn cần phải khởi động lại audd:

sudo service audit restart

(Trong trường hợp bạn chưa cài đặt, nó nằm trong gói audd.) Thủ phạm sau đó có thể được tìm thấy trong /var/log/audit/audit.log.


Hoàn hảo! Đó chính xác là những gì tôi đang tìm kiếm.
psusi

0

Thật không may, cơ chế mà Linux sử dụng để cho phép một người giám sát các tệp bị vô hiệu hóa, không cung cấp đủ thông tin để trích xuất dữ liệu hữu ích: bạn chỉ nhận được tên tệp và hành động đã được thực hiện.

Tôi đã thử sử dụng một cái gì đó như thế này:

sudo inotifywait -mr somedir --format "%w%f" | while read file; do echo -n "$file => ";lsof -b $file; echo ""; done

Điều này lắng nghe để kích hoạt các sự kiện trên thư mục được chỉ định và đối với mỗi sự kiện, nó chạy lsof để cố gắng bắt quá trình chạm vào tệp. Thật không may cho hầu hết các truy cập mà tôi đã kiểm tra (chẳng hạn như sử dụng trình soạn thảo để ghi vào tệp), lệnh LSOF chỉ để làm chậm và không quản lý để nắm bắt quy trình vi phạm.

Nếu các quy trình của bạn thực hiện một số IO chuyên sâu hơn trên các tệp có vấn đề, thì số dặm của bạn có thể thay đổi. Chúc may mắn.


0

fnotifystat là một công cụ được thiết kế để xem hoạt động của tệp linux

sudo apt-get install fnotifystat
sudo fnotifystat
Total   Open  Close   Read  Write   PID  Process         Pathname
  7.0    1.0    1.0    5.0    0.0   2075 libvirtd        /proc/cpuinfo
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/physical_package_id
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node/node0
  4.0    2.0    2.0    0.0    0.0  15313 gnome-calendar  /usr/share/zoneinfo/Europe/London
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/online
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/present
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/node/node0/meminfo
  2.0    0.0    0.0    0.0    2.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-release.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-desktop.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-devel.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-kernel.log

Hiển thị 10 tệp hoạt động hàng đầu cứ sau 60 giây cho đến khi dừng:

sudo fnotifystat -t 10 60

Hiển thị độ nhạy của tệp cứ sau 10 giây chỉ 6 lần:

sudo fnotifystat 10 6

Hiển thị hoạt động tệp của thunderbird và xử lý ID 1827:

sudo fnotifystat -p thunderbird,1827

Hiển thị mọi tệp thông báo sự kiện và 20 tệp hoạt động hàng đầu trong một khoảng thời gian 5 phút:

sudo sudo notifystat -v -d -c 5m 1

Chỉ hiển thị mọi tệp thông báo sự kiện trên / sys và / Proc và không có thống kê định kỳ:

sudo fnotifystat -n -i /sys,/proc

Tham khảo trang người dùng fnotifystat để biết thêm thông tin, đây là một công cụ khá linh hoạt.

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.