Udělal jsem něco podobného pomocí inotifywait
nástroj:
#!/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
Tím se nastaví rekurzivní sledování adresářů v celém stromu a umožní vám provést příkaz, když se něco změní. Pokud chcete změny pouze zobrazit, můžete přidat -m
příznakem přepnete jej do monitorovacího režimu.
Pokud je mi známo, neexistuje jiný způsob než rekurzivní nastavení inotify
sledovat v každém adresáři.
To znamená, že vám nedojdou deskriptory souborů, protože inotify
nemusí pro sledování souboru nebo adresáře rezervovat fd (jeho předchůdce dnotify
, trpěl tímto omezením). inotify
místo toho používá „deskriptory sledování“.
Podle dokumentace pro inotifywatch je výchozí limit 8192 deskriptorů hodinek a můžete jej zvýšit zapsáním nové hodnoty na /proc/sys/fs/inotify/max_user_watches
.
$ inotifywait -m -r /path/to/your/directory
Tento příkaz stačí k rekurzivnímu sledování adresáře pro všechny události, jako je přístup, otevření, vytvoření, odstranění ...