Como rastrear os bloqueios de arquivos (por diretório)

2

Sou bastante novo no Linux e não tenho a menor ideia de como fazer isso.

Eu tenho um diretório e gostaria de monitorar (saída para shell) quando um arquivo dentro desse diretório obtém um bloqueio de arquivo e quando é liberado.

Não há problema em saber outras coisas, como quando um arquivo é criado e semelhante, mas estou interessado principalmente nos bloqueios.

Eu não preciso saber qual processo faz o bloqueio, é mais sobre a ordem em que isso acontece.

Tenho certeza que existe alguma ferramenta para isso (eu já instalei o dtrace , mas depois do --help eu decidi fazer uma pergunta aqui).

Quaisquer sugestões calorosamente apreciadas. Eu estou correndo uma caixa de fedora 14, se isso importa.

    
por hakre 05.10.2011 / 23:55

1 resposta

3

Eu não verifiquei que você conseguirá o que deseja com ele, mas a primeira coisa que eu tentarei é a auditoria subsistema . Certifique-se de que o daemon auditd foi iniciado e, em seguida, use auditctl para configurar o que você deseja registrar. Para acessos comuns de sistemas de arquivos, você faria

auditctl -w /path/to/directory
auditctl -a exit,always -S fnctl -S open -S flock -F dir=/path/to/directory

A opção -S pode ser usada para restringir a criação de log a configurações específicas de cores. Os logs aparecem em /var/log/audit/audit.log no Debian, e provavelmente no Fedora também.

Se você souber qual processo (es) pode bloquear o arquivo, considere executar strace nesses processos (e apenas observar as chamadas do sistema relacionadas a arquivos ou restringir ainda mais a syscalls específicas).

strace -s9999 -o foo.strace -e file foo
    
por 06.10.2011 / 01:26