Watchman - Değişiklikler için Dosya ve Dizin İzleme Aracı


Watchman, dosyaları izleyen, kaydeden veya değiştiklerinde işlem gerçekleştiren, açık kaynaklı ve platformlar arası bir dosya izleme hizmetidir. Facebook tarafından geliştirilmiştir ve Linux, OS X, FreeBSD ve Solaris'te çalışır. İstemci-sunucu modelinde çalışır ve daha güçlü bir bildirim sağlamak için Linux çekirdeğinin inotify yardımcı programını kullanır.

Bekçinin Faydalı Kavramları

  • Bir veya daha fazla dizin ağacını yinelemeli olarak izler.
  • İzlenen her dizine kök adı verilir.
  • Komut satırı aracılığıyla veya JSON formatında yazılmış bir yapılandırma dosyası aracılığıyla yapılandırılabilir.
  • Günlük dosyalarındaki değişiklikleri kaydeder.
  • Kökte meydana gelen dosya değişikliklerine aboneliği destekler.
  • Son kontrolünüzden bu yana dosya değişikliklerini veya ağacın geçerli durumunu sorgulamanıza olanak tanır.
  • Bir projenin tamamını izleyebilir.

Bu yazıda, Linux'ta dosyaları izlemek (izlemek) ve değiştiklerinde kayıt yapmak için watchman'in nasıl kurulacağını ve kullanılacağını açıklayacağız. Ayrıca bir dizinin nasıl izleneceğini ve değiştiğinde bir betiğin nasıl çağrılacağını da kısaca göstereceğiz.

Linux'ta Watchman Dosya İzleme Hizmetini Kurmak

Kaynaklardan bekçi hizmetini kuracağız, bu nedenle öncelikle şu gerekli bağımlılıkları libssl-dev, autoconf, automake yükleyin. Linux dağıtımınızda aşağıdaki komutu kullanarak Strong>libtool, setuptools, python-devel ve libfolly'yi kullanın.

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

Gerekli bağımlılıklar kurulduktan sonra, github deposunu indirerek watchman'i oluşturmaya başlayabilir, aşağıdaki komutları kullanarak yerel depoya geçebilir, yapılandırabilir, oluşturabilir ve yükleyebilirsiniz.

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

Linux'ta Watchman ile Dosya ve Dizinleri İzlemek

Watchman iki şekilde yapılandırılabilir: (1) arka plan programı arka planda çalışırken komut satırı yoluyla veya (2) JSON formatında yazılmış bir yapılandırma dosyası aracılığıyla.

Değişiklikleri bir dizinde (örneğin ~/bin) izlemek için aşağıdaki komutu çalıştırın.

watchman watch ~/bin/

Aşağıdaki komut, /usr/local/var/run/watchman/-state/ altında state adlı bir yapılandırma dosyasını JSON formatında ve bir günlük olarak yazar aynı konumda log adlı dosya.

Gösteri olarak cat komutunu kullanarak iki dosyayı görüntüleyebilirsiniz.

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

Ayrıca, bir dizin değişiklikler açısından izlendiğinde hangi eylemin tetikleneceğini de tanımlayabilirsiniz. Örneğin, aşağıdaki komutta, 'test-trigger' tetikleyicinin adıdır ve ~bin/pav.sh, değişiklikler algılandığında çağrılacak komut dosyasıdır izlenen dizinde.

Test amacıyla, pav.sh betiği aynı dizinde zaman damgası (yani file.$time.txt) içeren bir dosya oluşturur. betiğin saklandığı yer.

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

Dosyayı kaydedin ve betiği gösterildiği gibi yürütülebilir hale getirin.

chmod +x ~/bin/pav.sh

Tetikleyiciyi başlatmak için aşağıdaki komutu çalıştırın.

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

Bir dizini takip etmek için watchman komutunu çalıştırdığınızda, o dizin izleme listesine eklenir ve görüntülemek için aşağıdaki komutu çalıştırın.

watchman watch-list 

Bir kök için tetikleyici listesini görüntülemek için aşağıdaki komutu çalıştırın (~/bin yerine kök adını yazın).

watchman trigger-list ~/bin

Yukarıdaki yapılandırmaya dayanarak, ~/bin dizini her değiştiğinde, içinde file.2019-03-13.23:14:17.txt gibi bir dosya oluşturulur. ls komutunu kullanarak bunları görüntüleyebilirsiniz.

ls

Linux'ta Watchman Hizmetini Kaldırma

Watchman'i kaldırmak istiyorsanız kaynak dizine gidin ve aşağıdaki komutları çalıştırın:

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

Daha fazla bilgi için Watchman Github deposunu ziyaret edin: https://github.com/facebook/watchman.

Aşağıdaki ilgili makaleleri de okumak isteyebilirsiniz.

  1. Swatchdog – Linux'ta Gerçek Zamanlı Basit Günlük Dosyası İzleyici
  2. Günlük Dosyalarını Gerçek Zamanlı Olarak İzlemenin veya İzlemenin 4 Yolu
  3. fswatch – Linux'taki Dosyaları ve Dizin Değişikliklerini İzler
  4. Pyintify – Linux'ta Dosya Sistemi Değişikliklerini Gerçek Zamanlı Olarak İzleyin
  5. Inav – Linux'ta Apache Günlüklerini Gerçek Zamanlı Olarak İzleyin

Watchman, dosyaları ve kayıtları izleyen veya değiştiklerinde eylemleri tetikleyen açık kaynaklı bir dosya izleme hizmetidir. Soru sormak veya düşüncelerinizi bizimle paylaşmak için aşağıdaki geri bildirim formunu kullanın.