Ho fatto qualcosa di simile usando inotifywait
strumento:
#!/bin/bash
while true; do
inotifywait -e modify,create,delete -r /path/to/your/dir && \
<some command to execute when a file event is recorded>
done
Ciò imposterà i controlli di directory ricorsivi sull'intero albero e ti consentirà di eseguire un comando quando qualcosa cambia. Se vuoi solo visualizzare le modifiche, puoi aggiungere il -m
flag per metterlo in modalità monitor.
Per quanto ne so, non c'è altro modo che impostare ricorsivamente un inotify
watch su ogni directory.
Detto questo, non rimarrai senza descrittori di file perché inotify
non deve riservare un fd per controllare un file o una directory (il suo predecessore, dnotify
, soffriva di questa limitazione). inotify
utilizza invece "descrittori di controllo".
Secondo la documentazione per inotifywatch, il limite predefinito è 8192 descrittori di controllo e puoi aumentarlo scrivendo il nuovo valore a /proc/sys/fs/inotify/max_user_watches
.
$ inotifywait -m -r /path/to/your/directory
Questo comando è sufficiente per controllare la directory in modo ricorsivo per tutti gli eventi come accesso, apertura, creazione, eliminazione...