Supervisar cambios en el contenido de la carpeta

18

Puedo monitorear los cambios de contenido de un archivo usando el comando tail -f

¿Hay una manera similar de monitorear los cambios de una estructura de directorios de la misma forma en que tail -f monitorea el archivo?

Tengo un proceso de larga ejecución que agrega archivos a una determinada ruta en un directorio y quiero rastrear las entradas del archivo a medida que (o ellas) escriben en los directorios y subdirectorios.

johan.i.zahri
fuente

Respuestas:

27

El inotifysistema de kernel es lo que necesitas.

  1. Instalar inotify-tools:

    sudo apt-get install inotify-tools
    
  2. Configurar un reloj:

    inotifywait /path/to/directory --recursive --monitor
    
  3. Siéntate y mira la salida.


De man inotifywait:

-m, --monitor
   Instead of exiting  after  receiving  a  single  event,  execute
   indefinitely.   The default behaviour is to exit after the first
   event occurs.
-r, --recursive
   Watch all subdirectories of any directories passed as arguments.
   Watches will be set up recursively to an unlimited depth.   Sym‐
   bolic  links  are  not  traversed.  Newly created subdirectories
   will also be watched.

Puede usar la --eventopción para ver eventos específicos, como creación, modificación, etc.

muru
fuente
1
en caso de que alguien tenga este problema: no se pudo ver; límite superior en relojes inotify alcanzado, vaya aquí blog.sorah.jp/2012/01/24/inotify-limitation
johan.i.zahri
1
En uno de mis servidores descubrí que ya no se llama inotify-waitjusto inotifywait. Deben haber cambiado el nombre para eliminar el guión.
Jamesking56
@ Jamesking56 Edité el guión.
muru
Tenga en cuenta que la ayuda para inotifywait dice que espera las opciones antes de las rutas del archivo.
Felix Dombek
8

--eventsno es el filtro, tienes que usarlo --event. Por ejemplo, aquí está la línea de comando para monitorear eventos de creación / modificación:

# inotifywait . --recursive --monitor --event CREATE --event MODIFY

Entonces veo:

Setting up watches.  Beware: since -r was given, this may take a while!

Y aquí está el formato del feed:

[path] [event] [file]

p.ej

./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
Selly
fuente