Làm cách nào để ghi nhật ký hệ thống tệp đọc / ghi theo tên tệp trong Linux?


17

Tôi đang tìm kiếm một phương pháp đơn giản sẽ ghi nhật ký các hoạt động của hệ thống tệp. Nó sẽ hiển thị tên của tệp đang được truy cập hoặc sửa đổi.

Tôi quen thuộc với powertop và có vẻ như nó hoạt động ở một mức độ nào đó, đến mức nó hiển thị các tệp người dùng được ghi vào. Có bất kỳ tiện ích khác hỗ trợ tính năng này.

Một số phát hiện của tôi:

powertop : tốt nhất để ghi nhật ký truy cập ghi, nhưng tập trung hơn vào hoạt động CPU
iotop : hiển thị truy cập đĩa thời gian thực theo quy trình, nhưng không phải tên tệp
lsof : hiển thị các tệp đang mở trên mỗi quy trình, nhưng không truy cập tệp thời gian thực
iuler : hiển thị thời gian thực I / O hiệu suất của đĩa / mảng nhưng không chỉ ra tệp hoặc quá trình

Câu trả lời:


17

Cho đến nay iotoplà giải pháp tổng thể tốt nhất. Lệnh sau cung cấp cho bạn một đầu ra thời gian thực của tất cả các quy trình sử dụng đĩa.

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

Thậm chí bạn sẽ nhận thấy rằng quá trình sẽ được truy cập vào đĩa. Cách đơn giản để điều tra là dừng quá trình và bắt đầu với bước đi. Ví dụ:

sudo strace -f nmbd -D

Điều này sẽ cho bạn thấy các tòa nhà của truy cập hệ thống tập tin.

Một tùy chọn khác là inotify (7) , trong đó nhiều bản phân phối cung cấp "công cụ inotify" để bạn có thể xem đường dẫn qua

inotifywait -r -mpath_you_want_to_watch


1
fanotifylà một khung thông báo hệ thống tập tin mới trong nhân Linux (được thêm gần đây vào khoảng năm 2012). Bạn có thể muốn kiểm tra xem. Các công cụ và tiện ích sử dụng nó vẫn đang được viết, do đó bạn có thể phải tự viết một cái, nhưng nó mạnh mẽ hơn nhiều so với inotify, famin hoặc bất cứ thứ gì bạn có thể thấy cho đến nay.
allquixotic

3
Một tìm kiếm nhanh trên Google cho fanotify cho thấy một công cụ được gọi fatracetừ đây .
Thanh DK

Có gì nmbdtrong stracelệnh đã cho ?
dragosrsupercool

9

Một tùy chọn khác là http://linux.die.net/man/7/inotify nơi có nhiều bản phân phối cung cấp "công cụ inotify" để bạn có thể xem đường dẫn qua

inotifywait -r -m /<path you want to watch>

+1. «Inotifywait chờ đợi hiệu quả các thay đổi đối với các tệp bằng giao diện inotify (7) của Linux. »Tuyệt vời giúp kiểm toán chi tiết bằng cách hiển thị bất kỳ ACCESS và MODIFY <file> nào trong đường dẫn được theo dõi.
tuk0z

3

Gần đây tôi đã đi qua fatrace sử dụng fanotify . Công trình đẹp nên tôi nghĩ tôi sẽ chia sẻ. Nó ghi nhật ký tất cả các loại hoạt động tệp bao gồm mở / tạo / sửa đổi thành thiết bị xuất chuẩn hoặc tùy chọn một tệp và bạn thậm chí có thể lọc như chỉ nhận một số loại hoạt động. Theo mặc định, nó giám sát tất cả các mount ngoại trừ những cái ảo. Bản thân tác giả giải thích nó tốt ở đây.



-3
#!/usr/bin/perl
use Cwd;
use File::Touch;
use File::Temp qw/tempfile/;
use Time::HiRes qw/sleep time alarm/;
use Term::ReadKey;
my ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
if($hchar < 10) {print "please increase window size"; exit; }
my $mydir = getcwd;
my  ($fh, $tmpfile) = tempfile(UNLINK => 1);

while(1)
   {
   my $starttime = time;
   eval {
        local $SIG{ALRM} = sub { die "alarm\n" };
        alarm 0.4;
        $query = `find -neweraa $tmpfile 2>&1`; #change to mm for writes only
        touch($tmpfile);
        @files = split(/\n/,$query);
        alarm 0;
        };
   system('clear');
   foreach $file(@files) { $filecount{$file}++; }
   @sorted = sort {$filecount{$b} <=> $filecount{$a}} (keys %filecount);
   for ($x = 0;$x < $hchar-2; $x++) {print $filecount{$sorted[$x]}."\t".$sorted[$x]."\n";}
   my $endtime = time;
   my $length = ($endtime-$starttime);
   if ($length > 0.3) {print "program not designed for large trees, please use smaller tree.\n"; exit;}
   print "\n$length"."s\n"
   }

5
bạn có thể vui lòng cập nhật câu trả lời của mình với một số chi tiết về cách sử dụng mã này và những gì nó sẽ thực hiện cùng với các tác dụng phụ và hạn chế không?
Jeremy W
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.