Используйте strace!
Пример: список всех файлов, открытых Firefox во время сеанса:
strace -f firefox 2>&1 | grep 'open('
Результатом будет что-то вроде этого, если вы откроете второй экземпляр FireFox: http://pastebin.com/iRqxgiWN (Опция '-f' только заставляет strace следовать за процессами.)
Пример 2: список всех процессов, выполняемых FireFox:
strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('
Результаты примерно такие при посещении YouTube:
[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0
Вы можете сделать это и со многими другими системными вызовами ...
Сопоставляя параметры open()в вашем grepпоиске, вы также можете узнать, в каком режиме был открыт файл:
Просто добавьте | grep -P 'O_RDONLY|O_RDWR'(ведущий символ канала важен!), Чтобы отфильтровать доступ | grep -P 'O_WRONLY|O_RDWR'на чтение или на запись к вашей команде ...
РЕДАКТИРОВАТЬ :
Как уже упоминалось в комментариях, вы также можете использовать strace -fe open firefoxдля просмотра всех файлов, открытых FireFox. Вы также можете использовать strace -fe trace=file firefoxдля перечисления всех файловых операций, выполненных FireFox, которые имеют путь к файлу в качестве аргумента (open, stat, lstat, chmod, access, ...).
Многие другие доступны! Проверьте страницу руководства strace (1) .