Equivalente ao SysInternals FileMon para Linux?

13

Estou tentando depurar um aplicativo no Ubuntu - preciso ouvir tentativas de abertura de arquivo (mesmo para arquivos que não existem).

O Process Monitor (anteriormente conhecido como FileMon ) está disponível no Windows - o que há no cinto de utilitários do Ubuntu?

Obrigado!

Ashley

chickeninabiscuit
fonte

Respostas:

7

Você está procurando traços. Dê uma olhada aqui: https://wiki.ubuntu.com/Strace

Evan Anderson
fonte
2
Pelo que entendi, a execução de filemon permite ao usuário ver todos os acessos a arquivos. Por outro lado, exige que você especifique qual aplicativo abrir primeiro. Isso requer que você conheça com antecedência o aplicativo que está acessando esses arquivos. E se você não souber qual aplicativo está acessando os arquivos nos quais está interessado?
Chuacw 19/10/12
8

Depende do que você quer:

  • No geral, você deseja examinar o inotify para ver todos os acessos a arquivos que qualquer processo faz.

  • No pequeno, o strace permitirá observar os syscalls de um processo específico. Strace é incrível. Você pode rastrear as chamadas de um processo para 'abrir' strace -f -eopen $cmd, por exemplo. A página do manual tem detalhes completos sobre sintaxe, é claro.

pjz
fonte
Obrigado pjz. Para ser muito específico - estou tendo alguns problemas para começar a usar o Ogre3d no Ubuntu. Meu aplicativo de teste parece estar procurando alguns arquivos .cfg durante a inicialização. Quero ouvir todas as tentativas de abrir arquivos para garantir que os arquivos corretos estejam disponíveis e tenham as permissões corretas.
Chickeninabiscuit
strace -e open ./app
Justin
2

stracena frente de um aplicativo inicial, é bom observar o que o aplicativo está fazendo.
lsofé bom ver quais arquivos um aplicativo já está executando.

BTW:
lsof -ni:22 mostra qual processo está usando a porta 22.

ThorstenS
fonte
2

A SGI possui uma ferramenta que você pode querer experimentar: http://oss.sgi.com/projects/fam/

user10103
fonte
2
sob linux fam é história. Realmente usar inotify hoje em dia
ThorstenS
1

Aqui está um exemplo do uso do strace para rastrear alterações no arquivo:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fgarante que os eventos dos processos filhos sejam capturados.
-e trace=filediz que devemos capturar syscalls relacionadas a arquivos (por exemplo stat, open, futexetc.)
-pé o ID do processo (recuperados de ps -auxou outros meios) -oespecificou o outputfile (pode haver um monte de dados e você poderia passar a usar grep como um filtro.

waitinforatrain
fonte
1

Tente sysdig . Por exemplo:

sysdig -A -c echo_fds

Singlet
fonte
0

Isso é antigo, mas acho que é uma boa ideia atualizá-lo para a realidade de hoje.

Para depurar apenas um processo e seus filhos, o strace ainda é o melhor caminho. Ele pode mostrar facilmente todo o acesso a arquivos, mesmo em arquivos ausentes.

Para depuração genérica do sistema, o recurso de auditoria no kernel pode fazer isso e é o caminho recomendado. Ele não precisa de nenhum patch nos kernels recentes, apenas a auditoria instalada

Aqui está um guia simples para usá-lo:

audit-gui

Isso replica o arquivo de janelas do Windows, monitorando o acesso ao arquivo para todos os locais, processos, etc.

verifique também este post

higuita
fonte
0

Isto é o que funcionou bem para mim (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

Não sei por que 2>&1era necessário, mas não filtrava, a menos que eu o usasse.

Andrew
fonte