Как записывать / записывать файловую систему по имени файла в Linux?

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

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

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

Powertop : лучше всего подходит для записи в режиме записи, но больше сосредоточено на активности процессора
Iotop : показывает доступ к диску в режиме реального времени по процессу, но не имя файла
Lsof : показывает открытые файлы для каждого процесса, но не доступ к файлам в режиме реального времени
Iostat : показывает производительность ввода / вывода в реальном времени на диске / массивах, но не указывает файл или процесс

Пока что 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 

Это покажет вам системные вызовы доступа к файловой системе.

Другой вариант – inotify (7) , где многие дистрибутивы предоставляют «инструменты inotify», поэтому вы можете смотреть путь через

inotifywait -r -m path_you_want_to_watch

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

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

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

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

 #!/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" } в #!/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" } 
  • Получать цвета меньше или больше
  • Утилита командной строки Linux для определения битрейта mp3?
  • Использование правил udev для запуска скрипта при вставке USB
  • Сделать символическую ссылку в bash с двумя относительными путями
  • Сброс пароля root в Linux
  • Как я могу зашифровать строку в оболочке?
  • Есть ли формат файла Windows с <CR> -сепаратированными записями (без символов <LF>)?
  • Как сбрасывать физическую память в Linux?
  • Получить домашний каталог по имени пользователя
  • Какие маршруты должны быть установлены (в Linux), чтобы разрешить доступ в Интернет через данный интерфейс без установки его по умолчанию?
  • Ноутбук работает спонтанно
  • Давайте будем гением компьютера.