Думаю, вы ищете программу strace
, которая может отслеживать и регистрировать системные вызовы.Например, я могу запросить список файлов, открытых командой grep
, например:
strace -e trace=open,openat grep something M* > /dev/null
Опция -e trace=open,openat
сообщает strace
, что нас интересуют только эти два системных вызова.,
Я перенаправил вывод с grep
на /dev/null
, чтобы не загромождать вывод;вы также можете отправить вывод strace
в файл, используя опцию * 1013. *
Если у меня есть файлы MANIFEST.in
, MODULE_GUIDELINES.md
и Makefile
в моем локальном каталоге, это можетпроизводить вывод как:
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
openat(AT_FDCWD, "Makefile", O_RDONLY|O_NOCTTY) = 3
openat(AT_FDCWD, "MANIFEST.in", O_RDONLY|O_NOCTTY) = 3
openat(AT_FDCWD, "MODULE_GUIDELINES.md", O_RDONLY|O_NOCTTY) = 3
+++ exited with 0 +++
Здесь вы можете увидеть как общие библиотеки, открытые при запуске grep
, так и файлы, которые были открыты самим grep
.
Вы можете прочитатьбольше на странице руководства strace .