Как записывать / записывать файловую систему по имени файла в Linux?
Я ищу простой метод, который будет выполнять операции файловой системы. Он должен отображать имя файла, к которому осуществляется доступ или изменен.
Я знаком с powertop, и, похоже, это работает в той степени, в какой он показывает файлы пользователя, которые были написаны. Есть ли другие утилиты, которые поддерживают эту функцию.
Некоторые из моих выводов:
- Открытие командной строки Grub при выборе Ubuntu
- Control-Up, Down, Left, Right, как дополнительные клавиши
- Какие порты используются приложением
- Несоответствие между df и du
- Проверьте, доступен ли порт на удаленной системе (без telnet)
Powertop : лучше всего подходит для записи в режиме записи, но больше сосредоточено на активности процессора
Iotop : показывает доступ к диску в режиме реального времени по процессу, но не имя файла
Lsof : показывает открытые файлы для каждого процесса, но не доступ к файлам в режиме реального времени
Iostat : показывает производительность ввода / вывода в реальном времени на диске / массивах, но не указывает файл или процесс
- Проверка жесткого диска с использованием инструментов dd и md5sum
- Отобразить свободное пространство файловой системы для пользователя root
- Выйти из первичных разделов, хотите установить другую систему
- Как я могу установить Linux на жесткий диск другого компьютера (тот, который не загружается с компакт-диска)
- Записи NDP в Linux
- Ubuntu - Создайте ссылку на указанный каталог, чтобы я мог легко перейти на этот каталог
- Стеганографическое программное обеспечение
- В Google Chrome на Linux, где есть flv, если нет в / tmp?
Пока что 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" }