1

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

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

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

1 ответ1

2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .