
Я хочу знать, к каким файлам обращается процесс. strace
может предоставить мне эту информацию, но вывод strace
довольно "сырой". Есть ли что-то, что обеспечивает подобную функциональность, но в более удобной для восприятия форме (т. е. отфильтровывает библиотеки, выделяет файлы в каталоге $HOME, предоставляет статистику о том, как часто осуществляется доступ к вещам и т. д.)?
решение1
Парень по имени Оле Танге закодировал инструмент, который вы описываете. Посмотрите здесьhttps://gitlab.com/ole.tange/tangetools/tree/master/tracefile. Файл трассировки по сути является скриптом оболочки, поэтому сделайте его исполняемым и запустите. Файл .pod — это руководство, описывающее, как его использовать.
решение2
жирная трасса
Установитьжирная трассаупаковка:
sudo apt install fatrace
ИМЯ fatrace - отчет о событиях доступа к файлам в масштабах всей системы
СИНОПСИС fatrace [ ВАРИАНТЫ ]
ОПИСАНИЕ fatrace сообщает о событиях доступа к файлам из всех запущенных процессов.
Он не сообщает о доступе к файлам самим fatrace, чтобы избежать регистрации событий, вызванных записью вывода в файл. Он также игнорирует события в виртуальных и ядерных файловых системах, таких как sysfs, proc и devtmpfs.
Его основная цель — найти процессы, которые без необходимости активируют диск и тем самым мешают экономии энергии.
По умолчанию события отправляются в stdout. Это может вызвать некоторые циклы, если вы запустите этот инструмент, например, в gnome-terminal, так как это вызовет доступ к диску для каждой строки вывода. Чтобы избежать этого, перенаправьте вывод в файл.
ФОРМАТ ВЫХОДНЫХ ДАННЫХ
Типичное событие выглядит такrsyslogd(875): W /var/log/auth.log compiz(1971): O device 8:2 inode 658203
Строка имеет следующие поля:
Имя процесса. Это считывается из /proc/pid/comm и может быть сокращено для длинных имен процессов.
Идентификатор процесса
Тип события: Открыть, Чтение, Запись или Закрыть. Возможны комбинации, например CW для закрытия записанного файла.
Затронутые файлы. В некоторых случаях путь и имя не могут быть определены, например, потому что это временный файл, который уже удален. В этом случае он выводит основной и дополнительный номер устройства, а также номер инода. Чтобы изучить такой процесс более подробно, следует рассмотреть возможность использования strace(1).
Если указать опцию --timestamp, первым полем будет текущее время.