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.
Talvez incron poderia ser usado?
fonte
Algumas idéias. Você pode usar
strace
para ver o que seu aplicativo está fazendo, mas isso pode gerar um log de logs e diminuir a velocidade do sistema.Outra idéia é usar
inotifywait
, depoislsof/fuser
no arquivo, para ver o que está sendo usado. Você pode tentar executar esse script com alta prioridade (se você puder) para ter informações o mais precisas possível. Provavelmente não atenderá aunlink
chamada, pois o arquivo desaparecerá antes da entrega do evento.fonte
-f
sinalizador, para seguir os filhos.Embora a recomendação auditd da fenix pareça ideal, você pode encontrar um IDS de sistema de arquivos como o AIDE útil. Infelizmente, é improvável que seja granulado o suficiente para o que você está tentando isolar.
Escreverei frequentemente scripts como uma solução para problemas como o que você descreve. Se você não conseguir o que deseja com as soluções recomendadas, escreva algo você mesmo. Muitas vezes não é muito complicado.
fonte