Descubra qual processo está gravando em um diretório específico

19

Eu tenho um diretório / some / dir e vejo que novos arquivos aparecem lá o tempo todo. Como descubro qual processo está criando esses arquivos?

homer5439
fonte

Respostas:

18

Tente lsof +r2 | grep '/some/dir'. Isso mostrará os processos acessando / some / dir e será atualizado a cada 2 segundos.

pesado
fonte
2
Thaks, isso é bem próximo do que eu preciso, pois produz a lista inteira de arquivos abertos primeiro e depois filtra por / some / dir. No entanto, se os processos criam os arquivos muito rapidamente e não os mantêm abertos, entendo que o acima pode perder alguns deles. Eu acho que nesse caso a única opção é o subsistema de auditoria, certo?
homer5439
Sua suposição está certa. Outra idéia é usar o inotifywait, consulte linux.die.net/man/1/inotifywait
weeheavy
obrigado, eu já havia considerado ferramentas de inotificação antes, no entanto, descobri que elas funcionam puramente no nível do sistema de arquivos e não parecem capazes de fornecer informações sobre quem fez o quê.
homer5439
18

Usar auditsubsistema de kernel

auditctl -w /some/dir/ -p war -k whatsgoingon

Isso cria um gancho esperando por algo acontecendo em / some / dir /.

Em seguida, verifique se o auditddaemon está em execução. Depois disso, aguarde até que os arquivos apareçam e vejam de /var/log/auditd.logou onde quer que ele seja gravado no sistema e leia o que aconteceu e por qual processo.

Janne Pikkarainen
fonte
Obrigado, parece que faz exatamente isso, embora exija as ferramentas de auditoria instaladas que provavelmente não estão em todos os lugares por padrão. Mas tudo bem, se alguém precisar dessas informações, elas sempre poderão ser instaladas.
homer5439
Como uma observação para as pessoas que estão vendo isso: você não pode colocar relógios nos diretórios de nível superior (proibidos pelo kernel)
Tony Sepia
1
Essa é realmente uma maneira eficiente! Muito obrigado!!! BTW, quando terminar, você pode remover todos os ganchos para evitar a gravação do log de auditoria para sempre auditctl -D. Você pode usar auditctl -lpara listar todos os ganchos.
Robert
0

lsof pode ajudar:

# lsof -r1 /some/dir/*
quanta
fonte
1
Obrigado. É correto que o comando acima apenas diga quem está acessando os arquivos existentes, mas não mostra nada para os arquivos criados recentemente? Meu entendimento é que / some / dir / * se expande para a lista de arquivos presentes no momento em que o comando é chamado.
homer5439