No tengo idea de una solución de shell, pero (suponiendo que Linux 1
) inotify
podría ser el camino a seguir ... vea este ejemplo imitandotail -F
(usando pyinotify
), tal vez pueda usarse como base para seguir un directorio completo .
En general, inotify
puede monitorear directorios (citando man 7 inotify
)
Los siguientes bits pueden especificarse en la máscara al llamar a inotify_add_watch (2) y pueden devolverse en el campo de máscara devuelto por read (2):
IN_ACCESS File was accessed (read) (*).
IN_ATTRIB Metadata changed, e.g., permissions, timestamps,
extended attributes, link count (since Linux 2.6.25),
UID, GID, etc. (*).
IN_CLOSE_WRITE File opened for writing was closed (*).
IN_CLOSE_NOWRITE File not opened for writing was closed (*).
IN_CREATE File/directory created in watched directory (*).
IN_DELETE File/directory deleted from watched directory (*).
IN_DELETE_SELF Watched file/directory was itself deleted.
IN_MODIFY File was modified (*).
IN_MOVE_SELF Watched file/directory was itself moved.
IN_MOVED_FROM File moved out of watched directory (*).
IN_MOVED_TO File moved into watched directory (*).
IN_OPEN File was opened (*).
Al monitorear un directorio , los eventos marcados con un asterisco (*) arriba pueden ocurrir para los archivos en el directorio, en cuyo caso el campo de nombre en la estructura devuelta inotify_event identifica el nombre del archivo dentro del directorio.
(... y pyinotify
sigue de cerca estas opciones)
1
: BSD tienen una cosa similar, kqueue
. Tal vez se pueda lograr una solución multiplataforma usando GIO ( enlaces de Python ) como capa de abstracción ya que, además inotify
, también puede usarkqueue