Averigüe qué proceso está escribiendo en un directorio específico

19

Tengo un directorio / some / dir, y veo que aparecen nuevos archivos allí todo el tiempo. ¿Cómo averiguo qué proceso está creando esos archivos?

homer5439
fuente

Respuestas:

18

Tratar lsof +r2 | grep '/some/dir'. Esto mostrará los procesos de acceso a / some / dir y se actualizará cada 2 segundos.

weeheavy
fuente
2
Gracias, esto está bastante cerca de lo que necesito, ya que produce la lista completa de archivos abiertos primero, luego los filtra por / some / dir. Sin embargo, si los procesos crean los archivos muy rápidamente y no los mantienen abiertos, entiendo que lo anterior puede perder algunos incluso. Creo que en ese caso la única opción es el subsistema de auditoría, ¿verdad?
homer5439
Tu suposición es correcta. Otra idea es usar inotifywait, vea linux.die.net/man/1/inotifywait
weeheavy
gracias, había considerado las herramientas de inotify antes, sin embargo, descubrí que funcionan puramente a nivel de sistema de archivos y no parecen poder proporcionar información sobre quién hizo qué.
homer5439
18

Usar el auditsubsistema del kernel

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

Eso establece un gancho esperando que algo suceda bajo / some / dir /.

Entonces asegúrate de que tienes un auditddemonio corriendo. Después de eso, solo espere hasta que aparezcan los archivos y vea desde /var/log/auditd.logo donde sea que su sistema escriba y lea lo que sucedió y por qué proceso.

Janne Pikkarainen
fuente
Gracias, parece que hace exactamente eso, aunque requiere la instalación de herramientas de auditoría que probablemente no están en todas partes de forma predeterminada. Pero bueno, si uno necesita esa información, siempre se pueden instalar.
homer5439
Como una nota para las personas que ven esto: no se pueden colocar relojes en los directorios de nivel superior (prohibido por el núcleo)
Tony Sepia
1
¡Esa es realmente una manera eficiente! ¡¡¡Muchas gracias!!! Por cierto, cuando haya terminado, puede eliminar todos los ganchos para evitar escribir el registro de auditoría para siempre auditctl -D. Puede usar auditctl -lpara enumerar todos los ganchos.
Robert
0

lsof poder ayudar:

# lsof -r1 /some/dir/*
quanta
fuente
1
Gracias. ¿Es correcto que el comando anterior solo me indique quién está accediendo a los archivos existentes pero no muestra nada para los archivos recién creados? Tengo entendido que / some / dir / * se expande a la lista de archivos presentes en el momento en que se invoca el comando.
homer5439