Инструмент для контроля чтения-записи файла в Unix

Есть ли любой инструмент/команда, доступный в Unix для контроля чтения-записей в конкретном файле.

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

2
задан 07.10.2014, 18:09

3 ответа

Короткий ответ, ни один, о чем я знаю.

vmstat (выполненный vmstat 1 получить непосредственную идею того, что это делает; ^C выходить), может показать Вам полную систему использование IO (BI и BO столбцы, блоки в и блокируют, вероятно, наиболее полезны). Я нахожу это очень полезным в главным образом тихих системах.

strace (выполненный strace -o /tmp/ls ls /tmp; затем посмотрите на /tmp/ls файл для наблюдения, какие данные это дает Вам), позволил бы Вам следовать за путем выполнения своей программы через всю запись () вызовы и сложить требуемые размеры для того, какой бы ни дескриптор файла Вы интересуетесь. Зато, это могло быть задано сценарием и будет специально для той программы для того файла. На оборотной стороне это замедлило бы осуществление Вашей программы (возможно, это будет работать очень медленно), и это полностью пропустило бы весь диск IO, который использует mmap(2) регионы памяти.

Вы могли записать библиотеку, с которой Вы загрузитесь LD_PRELOAD переменная среды для замены read(2) и write(2) с обертками, которые выполняют Ваш учет и завершают вызов системных вызовов (это почти наверняка не стоит стычки). Этому также не удалось бы видеть диск IO, который использует mmap(2). У Вас должно было бы быть ужасное серьезное основание пойти этим путем.

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

0
ответ дан 12.12.2019, 07:01

Существует fam, http://en.wikipedia.org/wiki/File_alteration_monitor, но не уверены если его доступное для Вашего http://oss.sgi.com/projects/fam/ ОС

Также Google inotify.

0
ответ дан 12.12.2019, 07:01

В Linux было несколько API для контроля действия файловой системы ранее (dnotify и inotify), но последний называют fanotify. LWN обсуждают API здесь.

Для контроля целых файловых систем существует iostat, что Вы просите, кажется, несколько похож на iostat, но только данный файл. Я не знаю о такой комбинации, но при помощи API можно записать собственное.

0
ответ дан 12.12.2019, 07:01

На Linux можно использовать incron. На Solaris/BSD Вы, вероятно, сможете получить информацию с помощью DTrace.

0
ответ дан 12.12.2019, 07:01

Теги

Похожие вопросы