Есть ли какой-либо инструмент / команда, доступная в unix для мониторинга чтения / записи в конкретном файле.
Я также хочу собрать, сколько данных читается при каждом доступе к файлу.
unix
monitoring
Der Hochstapler
источник
источник
Ответы:
Короткий ответ, ни один из которых я не знаю.
vmstat
(запустить,vmstat 1
чтобы получить непосредственное представление о том, что он делает;^C
выйти) может показать вам полное использование системного ввода-вывода (BI
иBO
колонки, блоки в и блоки, вероятно, наиболее полезны сразу). Я нахожу это очень полезным в основном в тихих системах.strace
(запуститьstrace -o /tmp/ls ls /tmp
; затем посмотреть на/tmp/ls
файл, чтобы увидеть, какие данные он вам дает) позволит вам следовать пути выполнения вашей программы через все вызовы write (), и добавить запрошенные размеры для любого дескриптора файла, который вас интересует. плюс, это может быть написано в сценарии и будет специально для этой программы для этого файла. С другой стороны, это замедлит выполнение вашей программы (возможно, она будет выполняться очень медленно) и полностью пропустит все операции дискового ввода-вывода, использующиеmmap(2)
области памяти.Вы можете написать библиотеку, которую вы будете загружать с помощью
LD_PRELOAD
переменной среды для замены,read(2)
аwrite(2)
также обертки, которые будут вести учет и вызывать системные вызовы (это почти наверняка не стоит хлопот). Также было бы невозможно увидеть дисковый ввод-вывод, который используетmmap(2)
. У вас должна быть ужасная веская причина, чтобы пойти по этому пути.Вы можете написать бэкэнд FUSE, чтобы вести учет. Это было бы медленно, и это замедлило бы каждый процесс, использующий эту файловую систему. Код FUSE также предоставляет множество внутренних компонентов ядра, которые ожидают, что быстрые результаты будут произвольно длинными (и, по меркам ядра) длительными задержками из-за программ пользовательского пространства. Программы могут вызвать нехватку памяти, обмен и дальнейший трафик диска. FUSE лучше всего развертывать в средах с большим объемом памяти, требованиями не в реальном времени и низкой стоимостью сбоев.
источник
Есть fam, http://en.wikipedia.org/wiki/File_alteration_monitor , но не уверен, доступен ли он для вашей ОС http://oss.sgi.com/projects/fam/
Также Google Inotify.
источник
В Linux было несколько API-интерфейсов для мониторинга активности файловой системы (dnotify и inotify), но последний из них называется
fanotify
. LWN обсуждают API здесь .Для мониторинга целых файловых систем есть iostat , то, что вы запрашиваете, похоже на iostat, но только для данного файла. Я не знаю о такой комбинации, но с помощью API вы можете написать свой собственный.
источник
В Linux вы можете использовать incron . На Solaris / BSD вы, вероятно, сможете получить информацию, используя DTrace .
источник