Как я могу войти файловая система чтения / записи по имени файла в Linux?

Я ищу простой метод, который будет регистрировать операции файловой системы. Он должен отображать имя файла, к которому осуществляется доступ или изменение.

Я знаком с powertop, и, похоже, это работает до такой степени, что показывает пользовательские файлы, в которые были записаны. Есть ли другие утилиты, поддерживающие эту функцию.

некоторые из моих выводов:

powertop: лучшие для записи журналов доступа, но более сосредоточен на ЦП активность

iotop: показывает доступ к диску в реальном времени процессом, но не имя файла

lsof: показывает открытые файлы для каждого процесса, но не в режиме реального времени доступа к файлам

iostat: показывает в реальном масштабе времени представление I/O диска / массивов но не показывает архив или process

3
задан cmcginty
12.12.2022 6:12 Количество просмотров материала 2992
Распечатать страницу

5 ответов

пока iotop - это лучшее решение. Следующая команда предоставляет вывод в реальном времени всех процессов, использующих диск.

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

Evenutaly вы заметите, что процесс будет доступ к диску. Простой способ исследовать-остановить процесс и начать его со strace. Например:

sudo strace -f nmbd -D

это покажет вам syscalls доступа к файловой системе.

другой вариант:inotify (7), где много дистрибутивы предоставляют "inotify-tools", так что вы можете смотреть путь через

inotifywait -r -mpath_you_want_to_watch

15
отвечен cmcginty 2022-12-13 14:00

другой параметр http://linux.die.net/man/7/inotify где многие дистрибутивы предоставляют "inotify-tools", так что вы можете смотреть путь через

inotifywait -r -m /<path you want to watch>
7
отвечен x29a 2022-12-13 16:17

на logging (а не контроля), вы должны рассмотреть возможность использования демон аудита Linux введен в ядре 2.6.

2
отвечен RedGrittyBrick 2022-12-13 18:34

Я недавно наткнулся на fatrace использует fanotify. Работает красиво, поэтому я решил, что поделюсь. Он регистрирует все типы файловых операций, включая open/create / modify в stdout или, возможно, файл, и вы даже можете фильтровать, чтобы получить только некоторые типы операций. По умолчанию он отслеживает все монтирования, кроме виртуальных. сам автор хорошо это объясняет.

2
отвечен turbofan 2022-12-13 20:51
#!/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"
   }
-3
отвечен Jon 2022-12-13 23:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх