fswatch è un monitor di cambiamento file multi-piattaforma che riceve notifiche quando i contenuti dei file o delle directory specificate vengono modificati o alterati.
Esegue quattro tipi di monitoraggi su diversi sistemi operativi come:
- A monitor build on the File System Events API of Apple OS X.
- A monitor based on kqueue, a notification interface present in FreeBSD 4.1 also supported on many *BSD systems, OS X inclusive.
- A monitor based on File Events Notification API of the Solaris kernel plus its spin-offs.
- A monitor based on inotify, a kernel subsystem that shows file system modifications to apps.
- A monitor based on ReadDirectoryChangesW, a Windows API that records alters to a directory.
- A monitor that regularly check that status of file system, keeps file modification times in memory, and manually determine file system changes (which works anywhere, where stat can be used).
Caratteristiche di fswatch
- Supporta diverse API specifiche del sistema operativo
- Consente il monitoraggio ricorsivo delle directory
- Esegue il filtraggio del percorso utilizzando espressioni regolari di inclusione ed esclusione
- Supporta il formato di registrazione personalizzabile
- Inoltre, supporta eventi di inattività periodica
Come installare fswatch nei sistemi Linux
Sfortunatamente, il pacchetto fswatch non è disponibile per l’installazione dai repository di sistema predefiniti in nessuna distribuzione Linux. L’unico modo per installare l’ultima versione di fswatch è compilare il tarball sorgente come mostrato nelle seguenti istruzioni di installazione.
Prima di tutto, scarica l’ultimo tarball di fswatch utilizzando il seguente comando wget e installalo come mostrato:
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz $ tar -xvzf fswatch-1.9.3.tar.gz $ cd fswatch-1.9.3 $ ./configure $ make $ sudo make install
Importante: Assicurati di avere GNU GCC (Compilatore C e C++) e Strumenti di Sviluppo (build-essential su Debian/Ubuntu) installati sul sistema, prima di compilare fswatch da sorgente. Se non lo hai, installalo utilizzando il seguente comando sulle rispettive distribuzioni Linux..
# yum group install 'Development Tools' [On CentOS/RHEL] # dnf group install 'Development Tools' [On Fedora 22+ Versions] $ sudo apt-get install build-essential [On Debian/Ubuntu Versions]
Sulle distribuzioni Debian/Ubuntu, potresti ricevere il seguente errore durante l’esecuzione del comando fswatch..
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
Per risolverlo, devi eseguire il comando qui sotto, questo aiuterà a aggiornare i collegamenti e la cache delle librerie dinamiche prima di poter iniziare ad utilizzare fswatch.
$ sudo ldconfig
Come si utilizza fswatch su Linux?
La sintassi generale per eseguire fswatch è:
$ fswatch [option] [path]
Su Linux, è consigliabile utilizzare il monitor inotify predefinito, è possibile elencare i monitor disponibili utilizzando l’opzione -M
o - list-monitors
:
$ fswatch -M $ fswatch --list-monitors

Il comando seguente ti permette di monitorare le modifiche nella directory corrente (/home/tecmint
), con gli eventi che vengono inviati all’output standard ogni 4 secondi.
L’opzione -l
o –-latency
ti consente di impostare la latenza in secondi, il valore predefinito è di 1 secondo.
$ fswatch -l 4 .
Il comando successivo monitora le modifiche al file /var/log/auth.log ogni 5 secondi:
$ fswatch -l 5 /var/log/auth.log
Utilizzando l’opzione -t
o --timestamp
si stampa il timestamp per ogni evento, per stampare il tempo nel formato UTC, utilizzare l’opzione -u
o --utf-time
. È inoltre possibile formattare il tempo utilizzando l’opzione -f
o --format-time
formato:
$ fswatch --timestamp /var/log/auth.log
Successivamente, -x
o --event-flags
dice a fswatch di stampare i flag dell’evento insieme al percorso dell’evento. È possibile utilizzare l’opzione –event-field-seperator per stampare gli eventi utilizzando il separatore specifico.
$ fswatch --events-flags ~ /var/log/auth.log
Per stampare il valore numerico di un evento che indica modifiche nella directory home e nel file /var/log/auth.log, utilizza l’opzione -n
o --numeric
come segue:
$ fswatch --numeric ~ /var/log/auth.log
Forse puoi consultare la pagina man di fswatch per informazioni dettagliate sulle opzioni di utilizzo e informazioni:
$ man fswatch
Per ulteriori informazioni e utilizzo, visita il repository Github di fswatch: https://github.com/emcrisostomo/fswatch
In questo post, abbiamo trattato un semplice utilità da riga di comando per aiutare gli utenti Linux a essere notificati quando i contenuti di file o gerarchie di directory specificati vengono modificati.
I hope all went well with the installation, if that is not the case for you, make an effort to reach us via the feedback form below. In addition, in case you have used it before, you may want to offer us some thoughts about your experience with fswatch.
Source:
https://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/