Fswatch je bezplatný nástroj pro sledování změn souborů s otevřeným zdrojovým kódem pro více platforem, který nás upozorní, když se obsah zadaných souborů nebo adresářů změní nebo změní. Pomocí fswatch můžeme snadno sledovat změny prováděné v souborech a/nebo adresářích. Podporuje všechny operační systémy, včetně GNU/Linux, *BSD, Mac OS X, Solaris a Microsoft Windows atd. V tomto stručném průvodci vám ukážu, jak monitorovat změny souborů pomocí fswatch v operačních systémech podobných Unixu.
Typy monitorování
fswatch implementuje následující typy monitorů.
- Monitor založený na rozhraní File System Events API systému Apple OS X.
- Monitor založený na kqueue, oznamovacím rozhraní představeném ve FreeBSD 4.1.
- Monitor založený na rozhraní File Events Notification API jádra Solaris a jeho derivátů.
- Monitor založený na inotify, subsystému jádra Linuxu, který aplikacím hlásí změny systému souborů.
- Monitor založený na ReadDirectoryChangesW, rozhraní Microsoft Windows API, které hlásí změny do adresáře.
- Monitor, který pravidelně shromažďuje údaje o systému souborů, ukládá časy úprav souborů do paměti a ručně vypočítává změny systému souborů.
Funkce
Pokud jde o funkce, můžeme uvést následující:
- Nástroj pro více platforem a open source.
- Podpora mnoha rozhraní API specifických pro operační systém.
- Rekurzivní monitorování adresářů.
- Filtrování cest pomocí zahrnutí a vyloučení regulárních výrazů.
- Přizpůsobitelný formát záznamu.
- Podpora pro pravidelné nečinné události.
- A mnoho.
Monitorování změn souborů pomocí fswatch v Linuxu
Protože nástroj fswatch není k dispozici ve výchozích repozitářích většiny distribucí Linuxu, musíte ručně zkompilovat a nainstalovat nejnovější verzi ze zdroje, jak je popsáno níže.
Před kompilací je třeba nainstalovat vývojové nástroje do vaší distribuce Linuxu. Chcete-li nainstalovat vývojové nástroje na různé distribuce Linuxu, postupujte podle následujícího průvodce.
- Jak nainstalovat vývojové nástroje v systému Linux
Poté si stáhněte zdrojový soubor fswatch zde .
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
Extrahujte stažený tarball:
$ tar -zxvf fswatch-1.9.3.tar.gz
Přejděte do složky projektu:
$ cd fswatch-1.9.3/
Nakonec zkompilujte a nainstalujte fswatch spuštěním následujících příkazů jeden po druhém.
$ ./configure
$ make
$ sudo make install
Nakonec spusťte následující příkaz k obnovení odkazů a mezipaměti dynamických knihoven:
$ sudo ldconfig
Pokud výše uvedený příkaz nespustíte, může se v systémech GNU/Linux zobrazit následující chyba.
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
Použití fswatch
Použití fswatch není žádný velký problém. Typická syntaxe fswatch je:
$ fswatch [options] ... path-0 ... path-n
Chcete-li vyzkoušet, jak fswatch funguje, otevřete dvě okna Terminálu (říkejme jim Terminál 1 a Terminál 2 ).
V Terminálu 1 spusťte příkaz fswatch pro sledování adresáře $HOME.
$ fswatch /home/sk/
A v Terminálu 2 provádějte některé operace, jako je vytváření souborů/složek, mazání souborů, úprava souborů atd.
Cokoli uděláte v terminálu 2, bude upozorněno na terminálu 1. Podívejte se na následující snímky obrazovky.
Terminál 1 - Příkaz fswatch je spuštěn a změny souboru jsou sledovány:
Sledování změn souborů pomocí fswatch
Terminál 2 - Proveďte nějaké náhodné změny v souborech/složkách:
Ve výchozím nastavení fswatch vybere nejlepší dostupný monitor na aktuální platformě, pokud jde o výkon a spotřebu zdrojů. V systému Linux je výchozím monitorem inotify .
Chcete-li zobrazit seznam dostupných monitorů na aktuální platformě (v našem případě Linux), spusťte:
$ fswatch -M
Nebo,
$ fswatch --list-monitors
Ukázkový výstup:
inotify_monitor poll_monitor
Chcete-li monitorovat konkrétní soubor nebo adresář pomocí konkrétní volby monitoru, spusťte:
$ swatch -m kqueue_monitor /home/sk/
Ve výchozím nastavení bude fswatch sledovat změny souboru, dokud je ručně nezastavíte vyvoláním CTRL+C klíče.
Fswatch můžete také ukončit po přijetí první sady událostí zadáním volby -1 jak je znázorněno v následujícím příkazu:
$ fswatch -1 /home/sk/
Tento příkaz se ukončí ihned po přijetí první sady událostí.
fswatch bude sledovat změny ve všech souborech/složkách v zadané cestě. Pokud chcete sledovat změny provedené pouze v adresářích, použijte -d možnost.
$ fswatch -d /home/sk/
Možností je samozřejmě více. Podívejte se na manuálové stránky nebo stránku dokumentace projektu pro podrobné pokyny.
$ man fswatch