Esta é uma resposta que escrevi para uma pergunta anterior:
Geralmente, se você deseja saber o que um processo / usuário / arquivo está fazendo sem precisar executar o lsof nele 24/7, você usa o auditctl.
Supondo que você tenha um controle de auditoria recente do kernel deve ser uma operação simples. (Isso está no Debian-fu, se você estiver executando o Red Hat translate conforme apropriado)
# apt-get install auditd
Verifique se está em execução (/etc/init.d/auditd status).
auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>
Substitua b64 por b32 se você estiver executando o arco de 32 bits, aberto pode ser substituído por qualquer chamada do sistema ou pela palavra 'todos'
Para mais, leia a página de manual auditctl.
Você pode usar esse método e pedir para assistir a chamada do sistema 'desvincular'.
O parâmetro -w é útil para assistir arquivos / diretórios, mas, como a página de manual explica, existem advertências.
-w caminho Insira um relógio para o objeto do sistema de arquivos no caminho. Você não pode inserir um relógio no diretório de nível superior. Isso é proibido pelo kernel. Os curingas também não são suportados e gerarão um aviso. A maneira como os relógios funcionam é rastreando o inode internamente. Isso significa que, se você observar um diretório, verá o que parece ser um evento de arquivo, mas na verdade é apenas a atualização de metadados. Você pode perder alguns eventos ao fazer isso. Se você precisar assistir a todos os arquivos em um diretório, é recomendável colocar uma inspeção individual em cada arquivo. Diferentemente das regras de auditoria do syscall, os relógios não afetam o desempenho com base no número de regras enviadas ao kernel.