Use strace
!
Exemplo: lista todos os arquivos abertos pelo Firefox durante uma sessão:
strace -f firefox 2>&1 | grep 'open('
Resulta em algo assim se você abrir uma segunda instância do FireFox: link (A opção '-f' apenas faz o strace seguir o processo garfos.)
Exemplo 2: lista todos os processos executados pelo FireFox:
strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('
Resulta em algo assim ao visitar o 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
Você pode fazer isso com muitas outras chamadas do sistema também ...
Ao corresponder os parâmetros de open()
em sua pesquisa grep
, você também pode descobrir em qual modo o arquivo foi aberto:
Basta adicionar | grep -P 'O_RDONLY|O_RDWR'
(o caractere de canal principal é importante!) para filtrar o acesso de leitura ou | grep -P 'O_WRONLY|O_RDWR'
para acesso de gravação ao seu comando ...
EDITAR :
Como foi mencionado nos comentários, você também pode usar strace -fe open firefox
para listar todos os arquivos abertos pelo FireFox. Você também pode usar strace -fe trace=file firefox
para listar todas as operações de arquivos feitas pelo FireFox que tenham um caminho de arquivo como um argumento (aberto, stat, lstat, chmod, acesso, ...).
Muitos mais estão disponíveis! Confira a strace (1) página de manual.