GNU/Linux >> Znalost Linux >  >> Linux

Jak monitorovat kompletní strom adresářů pro změny v Linuxu?

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í ...


Linux
  1. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  2. Linux – jak zkombinovat strom s velikostí adresáře?

  3. Jak získat velikost adresáře v Linuxu

  1. Jak aktualizovat symbolický odkaz pro Linux

  2. Jak vytvořit sdílený adresář pro všechny uživatele v Linuxu

  3. Jak přejmenovat adresář v Linuxu

  1. Tvrdí se, že soubor mizí – Jak sledovat soubor pro smazání v Linuxu

  2. Jak mohu vytvořit strom adresářů v C++/Linux?

  3. Jak programově získám volné místo na disku pro adresář v Linuxu