
Логировать, к каким файлам обращается любой процесс Linux.
Whatfiles — это утилита Linux, которая записывает, какие файлы другая программа читает/записывает/создаёт/удаляет в вашей системе. Она также отслеживает все новые процессы и потоки, созданные целевым процессом.
Меня давно раздражало отсутствие простой утилиты, которая позволяла бы увидеть, к каким файлам обращается процесс от main() до завершения. Независимо от того, не доверяете ли вы поставщику программного обеспечения или беспокоитесь о вредоносном ПО, важно знать, что программа или установщик делает с вашей системой. lsof показывает только текущий момент, а strace слишком громоздок и сложен.
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-clone-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-heal-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-perspective-clone-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-convolve-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-smudge-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-dodge-burn-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-desaturate-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/plug-ins, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/lib/gimp/2.0/plug-ins, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/pluginrc, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/share/locale/en_US/LC_MESSAGES/gimp20-std-plug-ins.mo, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/lib/gimp/2.0/plug-ins/script-fu, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /etc/ld.so.cache, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /etc/ld.so.cache, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpui-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpwidgets-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpwidgets-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimp-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpcolor-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
базовое использование: запускает ls и записывает вывод в файл журнала в текущем каталоге:
$ whatfiles ls -lah ~/Documents
указать расположение выходного файла с помощью -o:
$ whatfiles -o MyLogFile cd ..
включить отладочный вывод, выводить в stdout, а не в файл журнала:
$ whatfiles -d -s apt install zoom
присоединиться к уже запущенному процессу (требуются права root):
$ sudo whatfiles -p 1234
Готовые к использованию бинарные файлы доступны на странице релизов! Кто-то также любезно добавил их в репозиторий Arch, а letompouce настроил конвейер GitLab.
gcc и make):$ cd whatfiles
$ make
$ sudo make install
Поддерживает архитектуры x86, x86_64, ARM32 и ARM64.
Разве это не переделка strace -fe trace=creat,open,openat,unlink,unlinkat ./program?
Да. Однако она стремится быть проще и удобнее для пользователя.
Есть ли версии для Mac и Windows?
Нет. Отслеживание системных вызовов на Mac требует task_for_pid(), для чего нужна подпись кода, которую мне не удалось настроить, и, в любом случае, я не заинтересован платить Apple $100 в год за написание бесплатного ПО. dtruss на Mac можно использовать для отслеживания одного процесса и его потомков, хотя флаг -t, похоже, принимает только один системный вызов для фильтрации. fs_usage делает нечто подобное, но я не уверен, отслеживает ли он дочерние процессы/потоки. Process Monitor для Windows вполне хорош.
whatfiles используется для запуска Firefox. (Присоединение с помощью -p [PID] после запуска работает нормально, как и использование whatfiles для запуска второго окна Firefox, если одно уже открыто.)Спасибо за ваш интерес, а также взгляните на Cloaker, Nestur и Flying Carpet!