Как можно контролировать поток ввода-вывода в определенном каталоге или файле Linux для чтения / записи байт?

У меня проблема с мониторингом потока ввода-вывода в определенном каталоге: количество прочитанных и записанных байтов в течение указанного периода.

Я пытаюсь использовать iostat , inotifywait и inotifywatch , но, к сожалению, они измеряют только активность по каталогу (открывать, закрывать, изменять и т. Д.), Они не дают информации о байтах, считанных и написанных.

2 Solutions collect form web for “Как можно контролировать поток ввода-вывода в определенном каталоге или файле Linux для чтения / записи байт?”

Опция заключается в использовании системы audit . Что-то вроде:

 sudo auditctl -a exit,always -F dir=/the/directory -p rw 

Затем проанализируйте audit.log для системных вызовов ввода / вывода.

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

Если вы знаете, какой процесс будет обращаться к файлу / директории, и вы уверены, что этот процесс выполняет только несколько или никаких других операций ввода-вывода, вы можете проанализировать /proc/PID/io и определить количество прочитанных / записанных байтов, посмотрев на rchar / wchar (любой ввод-вывод) или read_bytes / write_bytes (дисковый ввод-вывод) или даже syscr / syscw (число системных вызовов read () / write ()).

Если вы не знаете, какой процесс будет обращаться к файлу / директории (но вы уверены, что эти процессы выполняют только несколько или вообще не используют другой ввод-вывод) вам нужно посмотреть местоположение с помощью функции inotify , определить PID и затем выполнить механизм описанных в предыдущем абзаце.

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

Все эти решения не соответствуют одному байту, но могут дать вам хорошую оценку.

  • Объединить вывод нескольких независимых процессов в другом терминале
  • Система Samba требует чтения / записи файлов с / на NAS, выпущенных из рабочего стола Windows
  • Как уменьшить время ожидания (блокировки) процессов для чтения диска (только для обнаружения ошибки)?
  • Знайте, какой процесс выполняет I / O без iotop
  • Может ли программа «du» быть менее агрессивной?
  • Как условия гонки влияют на чтение и запись (которые происходят одновременно)
  • скрипт для регистрации всех статистических данных для определенного процесса
  • Как отслеживать источник всплесков ввода-вывода?
  • найти то, что пишет
  • / dev / sda не появляется после безопасного удаления
  • Постоянный низкий объем записывается в массив RAID (jbd2), что вызывает его?
  • Interesting Posts

    Мышь и клавиатура не работают в Windows 8.1 после двойной загрузки Ubuntu?

    Вставка переменной Bash – Perl Script

    Как выполнять поиск и список файлов и папок с определенным шаблоном?

    Имена файлов с пробелами в подстановке

    Grep строка из того же файла в нескольких файлах .tar.gz

    Замените все пробелы в начале каждой строки вкладкой

    В нижнем регистре все, кроме первой (верхняя) буква из UPPERCASE в кириллице

    где находится пользовательский контент на диске Mac OS X?

    установка Oracle 11g r2 на Linux 6.1

    Пользовательские горячие клавиши в dwm

    Один набор сочетаний клавиш для копирования / вставки / вырезания всех приложений X11

    Поиск исходного файла символической ссылки

    Как исправить прерывистое воспроизведение видео в Ubuntu?

    Как я могу получить свою карту памяти NVIDIA, оптимизированную для Optimus, для предоставления вывода через xrandr?

    Как я могу передать позиционный параметр, сценарий bash требует, чтобы он был недоступен?

    Linux и Unix - лучшая ОС в мире.