Watchman - Usa ka Himan sa Pagtan-aw sa File ug Direktoryo alang sa mga Kausaban


Ang Watchman usa ka open source ug cross-platform file watching service nga nagpahibalo sa utility sa Linux kernel aron makahatag og mas gamhanan nga pahibalo.

  • Kini recursively nagtan-aw sa pagtan-aw sa usa o daghan pa nga mga punoan sa direktoryo.
  • Ang matag gibantayan nga direktoryo gitawag og gamut.
  • Mahimo kining i-configure pinaagi sa command-line o usa ka configuration file nga gisulat sa JSON format.
  • Kini nagrekord sa mga kausaban sa log files.
  • Nagsuporta sa suskrisyon sa mga pagbag-o sa file nga mahitabo sa usa ka gamut.
  • Gitugotan ka sa pagpangutana sa usa ka gamut alang sa mga pagbag-o sa file sukad sa katapusan nimo nga gisusi, o ang karon nga kahimtang sa punoan.
  • Kini makatan-aw sa tibuok proyekto.

Sa kini nga artikulo, among ipasabut kung giunsa ang pag-install ug paggamit sa watchman sa pagtan-aw (pag-monitor) sa mga file ug pagrekord kung magbag-o sila sa Linux. Kita usab sa mubo nga pagpakita kon sa unsang paagi sa pagtan-aw sa usa ka direktoryo ug sa paggamit sa usa ka script sa diha nga kini mausab.

Pag-instalar sa Watchman File Watching Service sa Linux

Among i-install ang serbisyo sa watchman gikan sa mga tinubdan, busa i-install una kining mga gikinahanglan nga dependencies libssl-dev, autoconf, automake libtool, setuptools, python-devel ug libfolly gamit ang mosunod nga command sa imong Linux distribution.

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

Sa higayon nga ma-install ang gikinahanglan nga mga dependency, mahimo ka magsugod sa pagtukod sa watchman pinaagi sa pag-download sa github repository niini, pagbalhin ngadto sa lokal nga repository, pag-configure, pagtukod ug pag-instalar niini gamit ang mosunod nga mga sugo.

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

Pagtan-aw sa mga File ug Direktoryo nga adunay Watchman sa Linux

Ang Watchman mahimong ma-configure sa duha ka paagi: (1) pinaagi sa command-line samtang ang daemon nagdagan sa background o (2) pinaagi sa usa ka configuration file nga gisulat sa JSON format.

Aron makatan-aw ug direktoryo (e.g ~/bin) para sa mga kausaban, padagana ang mosunod nga sugo.

$ watchman watch ~/bin/

Ang mosunod nga sugo nagsulat og configuration file nga gitawag og state ubos sa /usr/local/var/run/watchman/-state/, sa JSON format ingon man usa ka log file nga gitawag og log sa parehas nga lokasyon.

Mahimo nimong tan-awon ang duha ka mga file gamit ang cat command ingon nga gipakita.

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

Mahimo usab nimo ipasabut kung unsang aksyon ang ma-trigger kung ang usa ka direktoryo nga gibantayan alang sa mga pagbag-o. Pananglitan sa mosunod nga sugo, 'test-trigger' mao ang ngalan sa gatilyo ug ~bin/pav.sh mao ang script nga gamiton kon ang mga kausaban mamatikdan sa direktoryo nga gibantayan.

Para sa mga katuyoan sa pagsulay, ang pav.sh script nagmugna lang ug file nga adunay timestamp (ie file.$time.txt) sulod sa samang direktoryo diin ang script gitipigan.

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

I-save ang file ug himoa nga ma-executable ang script sama sa gipakita.

$ chmod +x ~/bin/pav.sh

Aron ilunsad ang gatilyo, padagana ang mosunod nga sugo.

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

Kung gipatuman nimo ang tigbantay aron mabantayan ang usa ka direktoryo, idugang kini sa lista sa pagbantay ug aron makita kini, padagana ang mosunud nga mando.

$ watchman watch-list 

Para tan-awon ang lista sa ga-trigger para sa usa ka gamut, padagana ang mosunod nga command (ilisan ang ~/bin sa root name).

$ watchman trigger-list ~/bin

Base sa konfigurasyon sa ibabaw, sa matag higayon nga ang ~/bin nga direktoryo mausab, usa ka file sama sa file.2019-03-13.23:14:17.txt ang gihimo sulod niini ug mahimo nimo kining tan-awon gamit ang ls command.

$ ls

Pag-uninstall sa Watchman Service sa Linux

Kung gusto nimo i-uninstall ang watchman, balhin sa gigikanan nga direktoryo ug padagana ang mosunod nga mga sugo:

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

Para sa dugang nga impormasyon, bisitaha ang Watchman Github repository: https://github.com/facebook/watchman.

Mahimo usab nimong basahon kining mosunod nga may kalabotan nga mga artikulo.

  1. Swatchdog – Simple Log File Watcher sa Real-Time sa Linux
  2. 4 Mga Paagi sa Pagtan-aw o Pag-monitor sa mga Log File sa Tinuod nga Oras
  3. fswatch – Nagmonitor sa mga File ug Mga Pagbag-o sa Direktoryo sa Linux
  4. Pyintify – Pag-monitor sa mga Pagbag-o sa Filesystem sa Tinuod nga Oras sa Linux
  5. Inav – Tan-awa ang Apache Logs sa Real Time sa Linux

Ang Watchman usa ka bukas nga gigikanan nga serbisyo sa pagtan-aw sa file nga nagtan-aw sa mga file ug mga rekord, o nagpalihok sa mga aksyon, kung kini nagbag-o. Gamita ang porma sa feedback sa ubos sa pagpangutana o pagpaambit sa imong mga hunahuna kanamo.