Как отслеживать, в какие файлы записывается много данных в Linux?

Я могу контролировать ввод / вывод с помощью таких инструментов, как iotop. Это позволяет мне определить, какие процессы выполняют сколько операций ввода-вывода.

Теперь я хотел бы знать, в какие файлы эти процессы записывают все эти данные. Как бы я это сделал?

Например, что-то вроде: "Хорошо, я знаю, что Tomcat выполняет много операций ввода-вывода. Какие файлы он в основном читает / записывает из / в"?

1 ответ

Я знаю два способа получить такую ​​информацию.

  1. Используя вручную lsof,
    Старый добрый lsof может показать вам, к каким файлам обращается процесс или поток, наряду с несколькими другими частями информации. В iotop -o, глазное яблоко и принять к сведению TID (Идентификатор потока) значение процесса или потока, который необходимо проверить. Потом закрой iotop и беги lsof -p [pid/tid], Если вам нужно отсортировать вывод, направьте его в sort, Например, lsof -p [pid or tid] | sort -n -k 7,7 -r будет сортировать вывод из lsof по седьмой колонке (SIZE/OFF) в обратном порядке (от самого большого до самого маленького).

  2. С помощью fatrace,
    Это новое дополнение к Linux похоже на inotifyза исключением того, что он не нацелен на определенные файлы / каталоги. Он показывает совокупный дисковый ввод-вывод в зависимости от обращающихся файлов. В зависимости от вашего дистрибутива вы можете иметь или не иметь доступ к этой изящной маленькой программе в предварительно скомпилированном исполняемом виде. Самый старый дистрибутив, который обеспечивает fatrace в его официальных репозиториях я знаю Ubuntu 12.04. В Debian 7, который я использую, его нет.

Csysdig , вероятно, ваш лучший выбор. У него приятный интерфейс ncurses. https://github.com/draios/sysdig/wiki/Csysdig-Overview

Другие вопросы по тегам