J'ai fait quelque chose de similaire en utilisant le inotifywait
outil :
#!/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
Cela configurera des surveillances de répertoires récursives sur l'ensemble de l'arborescence et vous permettra d'exécuter une commande lorsque quelque chose change. Si vous voulez juste voir les changements, vous pouvez ajouter le -m
drapeau pour le mettre en mode moniteur.
À ma connaissance, il n'y a pas d'autre moyen que de définir récursivement un inotify
regarder sur chaque répertoire.
Cela dit, vous ne manquerez pas de descripteurs de fichiers car inotify
n'a pas besoin de réserver un fd pour surveiller un fichier ou un répertoire (son prédécesseur, dnotify
, a souffert de cette limitation). inotify
utilise des "descripteurs de surveillance" à la place.
Selon la documentation d'inotifywatch, la limite par défaut est de 8192 descripteurs de surveillance, et vous pouvez l'augmenter en écrivant la nouvelle valeur à /proc/sys/fs/inotify/max_user_watches
.
$ inotifywait -m -r /path/to/your/directory
Cette commande suffit à surveiller le répertoire de manière récursive pour tous les événements tels que l'accès, l'ouverture, la création, la suppression...