Ricerca nel sito web

Watchman: uno strumento per il controllo di file e directory per le modifiche


Watchman è un servizio di monitoraggio di file open source e multipiattaforma che controlla i file e registra o esegue azioni quando cambiano. È sviluppato da Facebook e funziona su Linux, OS X, FreeBSD e Solaris. Funziona in un modello client-server e utilizza l'utilità inotify del kernel Linux per fornire una notifica più potente.

Concetti utili di guardiano

  • Controlla ricorsivamente uno o più alberi di directory.
  • Ogni directory controllata è chiamata root.
  • Può essere configurato tramite la riga di comando o un file di configurazione scritto in formato JSON.
  • Registra le modifiche nei file di registro.
  • Supporta la sottoscrizione alle modifiche dei file che si verificano in una radice.
  • Ti consente di interrogare una radice per le modifiche ai file dall'ultima volta che hai controllato o per lo stato corrente dell'albero.
  • Può guardare un intero progetto.

In questo articolo spiegheremo come installare e utilizzare watchman per osservare (monitorare) i file e registrare quando cambiano in Linux. Dimostreremo anche brevemente come controllare una directory e invocare uno script quando cambia.

Installazione del servizio di sorveglianza file Watchman in Linux

Installeremo il servizio watchman dai sorgenti, quindi installa prima queste dipendenze richieste libssl-dev, autoconf, automake libtool, setuptools, python-devel e libfolly utilizzando il seguente comando sulla tua distribuzione Linux.

----------- On Debian/Ubuntu ----------- 
sudo apt install autoconf automake build-essential python-setuptools python-dev libssl-dev libtool 

----------- On RHEL/CentOS -----------
yum install autoconf automake python-setuptools python-devel openssl-devel libssl-devel libtool 
yum groupinstall 'Development Tools' 

----------- On Fedora -----------
sudo dnf install autoconf automake python-setuptools openssl-devel libssl-devel libtool 
sudo dnf groupinstall 'Development Tools'  

Una volta installate le dipendenze richieste, puoi iniziare a creare watchman scaricando il suo repository github, spostandoti nel repository locale, configurandolo, compilandolo e installandolo utilizzando i seguenti comandi.

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.9.0  
./autogen.sh
./configure
make
sudo make install

Guardare file e directory con Watchman in Linux

Watchman può essere configurato in due modi: (1) tramite la riga di comando mentre il demone è in esecuzione in background o (2) tramite un file di configurazione scritto in formato JSON.

Per controllare eventuali modifiche in una directory (ad esempio ~/bin), esegui il seguente comando.

watchman watch ~/bin/

Il seguente comando scrive un file di configurazione chiamato state in /usr/local/var/run/watchman/-state/, in formato JSON e un registro file chiamato log nella stessa posizione.

Puoi visualizzare i due file usando il comando cat come show.

cat /usr/local/var/run/watchman/aaronkilik-state/state
cat /usr/local/var/run/watchman/aaronkilik-state/log

Puoi anche definire quale azione attivare quando una directory viene controllata per le modifiche. Ad esempio, nel comando seguente, 'test-trigger' è il nome del trigger e ~bin/pav.sh è lo script che verrà richiamato quando vengono rilevate modifiche nella directory monitorata.

A scopo di test, lo script pav.sh crea semplicemente un file con un timestamp (ovvero file.$time.txt) all'interno della stessa directory dove è memorizzato lo script.

time=`date +%Y-%m-%d.%H:%M:%S`
touch file.$time.txt

Salvare il file e rendere eseguibile lo script come mostrato.

chmod +x ~/bin/pav.sh

Per avviare il trigger, esegui il comando seguente.

watchman -- trigger ~/bin 'test-trigger' -- ~/bin/pav.sh

Quando esegui watchman per tenere d'occhio una directory, viene aggiunta all'elenco di controllo e per visualizzarla, esegui il comando seguente.

watchman watch-list 

Per visualizzare l'elenco dei trigger per una root, esegui il seguente comando (sostituisci ~/bin con il nome root).

watchman trigger-list ~/bin

In base alla configurazione precedente, ogni volta che la directory ~/bin cambia, al suo interno viene creato un file come file.2019-03-13.23:14:17.txt e puoi visualizzarli usando il comando ls.

ls

Disinstallazione del servizio Watchman in Linux

Se desideri disinstallare watchman, spostati nella directory dei sorgenti ed esegui i seguenti comandi:

sudo make uninstall
cd '/usr/local/bin' && rm -f watchman 
cd '/usr/local/share/doc/watchman-4.9.0 ' && rm -f README.markdown 

Per ulteriori informazioni, visitare il repository Github di Watchman: https://github.com/facebook/watchman.

Potrebbe interessarti anche leggere i seguenti articoli correlati.

  1. Swatchdog: semplice osservatore di file di registro in tempo reale in Linux
  2. 4 modi per guardare o monitorare i file di registro in tempo reale
  3. fswatch: monitora i file e le modifiche alle directory in Linux
  4. Pyintify: monitora le modifiche del file system in tempo reale in Linux
  5. Inav – Guarda i log di Apache in tempo reale in Linux

Watchman è un servizio di monitoraggio di file open source che controlla file e record o attiva azioni quando cambiano. Utilizza il modulo di feedback qui sotto per porre domande o condividere i tuoi pensieri con noi.