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

1678
Johannes Ernst

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

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

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

1
Разве `iotop -o` не дает вам эту информацию? Larssend 8 лет назад 0
Не то чтобы я вижу. Это дает мне процессы / потоки и общую статистику, но не имена файлов. Johannes Ernst 8 лет назад 0

1 ответ на вопрос

1
Larssend

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

  1. Вручную используя lsof.
    Старый добрый lsofможет показать вам, к каким файлам обращается процесс или поток, наряду с несколькими другими частями информации. В iotop -oполе зрения и запишите значение TID(ID потока) процесса или потока, который необходимо проверить. Затем закройте 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, который я использую, его нет.

Похоже, они говорят мне, к каким файлам обращается мой процесс, но не говорят мне, в какие из этих файлов записываются все данные. «Размер» в lsof - это размер файла, а не скорость, с которой процесс записывает данные в файл. И я не вижу ничего, связанного с размером / скоростью, в http://manpages.ubuntu.com/manpages/wily/man1/fatrace.1.html вообще. Johannes Ernst 8 лет назад 0