Мониторинг ввода-вывода программы

Мониторинг ввода-вывода программы

У меня есть программа, которая порождает несколько дочерних процессов.

Я хочу знать, какие файлы эта программа и ее дочерние программы создают, удаляют и изменяют.

  • inotifywaitможет сказать мне, к каким файлам осуществляется доступ, но не может сказать, какой процесс это делает. И мне нужно знать, где создаются файлы, чтобы настроить монитор.

  • auditctlпозволит мне регистрировать, какие процессы изменяют файл, но, опять же, мне нужно знать, где находятся файлы, чтобы настроить ведение журнала.

  • lsofсообщит мне обо всех файлах, но, похоже, это не лучшее решение для отслеживания в реальном времени.

Есть ли что-то, что позволит мне отслеживать манипуляции с файлами программы, не зная заранее, какие именно файлы будут подвергаться манипуляциям?

решение1

straceВ Linux для мониторинга таких событий можно использовать :

strace -f -p <PID> -e trace=file

В Solaris вы можете использовать dtrace. Взгляните на инструмент DTraceToolkit opensnoop, который установлен по умолчанию в Solaris 11 в /usr/dtrace/DTT/Bin/opensnoop.

/usr/dtrace/DTT/Bin/opensnoop -p <pid>

решение2

Для Linux: opensnoop из Perf-tools от Brendengreg должен подойти https://github.com/brendangregg/perf-tools

Для Solaris Dtrace есть в любом случае

Связанный контент