Wyszukiwanie w witrynie

Watchman — narzędzie do monitorowania plików i katalogów pod kątem zmian


Watchman to wieloplatformowa usługa oglądania plików o otwartym kodzie źródłowym, która obserwuje pliki i rejestruje je lub wykonuje działania w przypadku ich zmiany. Został opracowany przez Facebook i działa na systemach Linux, OS X, FreeBSD i Solaris. Działa w modelu klient-serwer i wykorzystuje narzędzie inotify jądra Linuksa, aby zapewnić skuteczniejsze powiadomienia.

Przydatne pojęcia dotyczące stróża

  • Rekurencyjnie obserwuje jedno lub więcej drzew katalogów.
  • Każdy obserwowany katalog nazywany jest katalogiem głównym.
  • Można go skonfigurować za pomocą wiersza poleceń lub pliku konfiguracyjnego zapisanego w formacie JSON.
  • Rejestruje zmiany w plikach dziennika.
  • Obsługuje subskrypcję zmian plików zachodzących w katalogu głównym.
  • Umożliwia wysyłanie zapytań do katalogu głównego o zmiany w plikach od czasu ostatniego sprawdzania lub o bieżący stan drzewa.
  • Może oglądać cały projekt.

W tym artykule wyjaśnimy, jak zainstalować i używać programu watchman do oglądania (monitorowania) plików i rejestrowania ich zmian w systemie Linux. Pokrótce zademonstrujemy także, jak przeglądać katalog i wywoływać skrypt w przypadku jego zmiany.

Instalowanie usługi oglądania plików Watchman w systemie Linux

Zainstalujemy usługę watchman ze źródeł, więc najpierw zainstaluj te wymagane zależności libssl-dev, autoconf, automake libtool, setuptools, python-devel i libfolly za pomocą następującego polecenia w swojej dystrybucji Linuksa.

----------- 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'  

Po zainstalowaniu wymaganych zależności możesz rozpocząć budowanie watchmana, pobierając jego repozytorium github, przejdź do lokalnego repozytorium, skonfiguruj, zbuduj i zainstaluj go za pomocą następujących poleceń.

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

Oglądanie plików i katalogów za pomocą Watchmana w systemie Linux

Watchmana można skonfigurować na dwa sposoby: (1) za pomocą wiersza poleceń, gdy demon działa w tle lub (2) za pomocą pliku konfiguracyjnego zapisanego w formacie JSON.

Aby obejrzeć katalog (np. ~/bin) pod kątem zmian, uruchom następującą komendę.

watchman watch ~/bin/

Poniższe polecenie zapisuje plik konfiguracyjny o nazwie state w lokalizacji /usr/local/var/run/watchman/-state/ w formacie JSON oraz dziennik plik o nazwie log w tej samej lokalizacji.

Możesz wyświetlić oba pliki za pomocą polecenia cat jako show.

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

Możesz także zdefiniować, jaka akcja ma zostać wywołana, gdy katalog będzie obserwowany pod kątem zmian. Na przykład w poniższym poleceniu „test-trigger” to nazwa wyzwalacza, a ~bin/pav.sh to skrypt, który zostanie wywołany po wykryciu zmian w monitorowanym katalogu.

Do celów testowych skrypt pav.sh po prostu tworzy plik z znacznikiem czasu (tj. file.$time.txt) w tym samym katalogu gdzie przechowywany jest skrypt.

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

Zapisz plik i uczyń skrypt wykonywalnym, jak pokazano.

chmod +x ~/bin/pav.sh

Aby uruchomić wyzwalacz, uruchom następujące polecenie.

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

Kiedy uruchamiasz watchman, aby mieć oko na katalog, dodany do listy obserwowanych i aby go wyświetlić, uruchom następujące polecenie.

watchman watch-list 

Aby wyświetlić listę wyzwalaczy dla root, uruchom następujące polecenie (zamień ~/bin na nazwę root).

watchman trigger-list ~/bin

Bazując na powyższej konfiguracji, przy każdej zmianie katalogu ~/bin tworzony jest w nim plik taki jak file.2019-03-13.23:14:17.txt i możesz je wyświetlić za pomocą polecenia ls.

ls

Odinstalowywanie usługi Watchman w systemie Linux

Jeśli chcesz odinstalować watchman, przejdź do katalogu źródłowego i uruchom następujące polecenia:

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

Aby uzyskać więcej informacji, odwiedź repozytorium Watchman Github: https://github.com/facebook/watchman.

Możesz także przeczytać następujące powiązane artykuły.

  1. Swatchdog – prosty obserwator plików dziennika w czasie rzeczywistym w systemie Linux
  2. 4 sposoby oglądania lub monitorowania plików dziennika w czasie rzeczywistym
  3. fswatch – monitoruje zmiany w plikach i katalogach w systemie Linux
  4. Pyintify – Monitoruj zmiany w systemie plików w czasie rzeczywistym w systemie Linux
  5. Inav – Oglądaj logi Apache w czasie rzeczywistym w systemie Linux

Watchman to usługa przeglądania plików o otwartym kodzie źródłowym, która obserwuje pliki i nagrania lub uruchamia działania w przypadku ich zmiany. Skorzystaj z poniższego formularza opinii, aby zadać pytania lub podzielić się z nami swoimi przemyśleniami.