Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

Watchman:เครื่องมือตรวจสอบการเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีประสิทธิภาพ

วอทช์แมน เป็นบริการดูไฟล์โอเพ่นซอร์สและข้ามแพลตฟอร์มที่รับชมไฟล์และบันทึกหรือดำเนินการเมื่อมีการเปลี่ยนแปลง ได้รับการพัฒนาโดย Facebook และทำงานบน Linux, OS X, FreeBSD และ Solaris ทำงานในรูปแบบไคลเอ็นต์-เซิร์ฟเวอร์ และใช้ยูทิลิตี้ inotify ของเคอร์เนล Linux เพื่อให้การแจ้งเตือนที่มีประสิทธิภาพยิ่งขึ้น

แนวคิดที่เป็นประโยชน์ของ Watchman

  • จะเฝ้าดูแผนผังไดเร็กทอรีตั้งแต่หนึ่งรายการขึ้นไปแบบวนซ้ำ
  • แต่ละไดเร็กทอรีที่ถูกเฝ้าดูเรียกว่ารูท
  • สามารถกำหนดค่าผ่านทางบรรทัดคำสั่งหรือไฟล์การกำหนดค่าที่เขียนในรูปแบบ JSON
  • บันทึกการเปลี่ยนแปลงในไฟล์บันทึก
  • รองรับการสมัครสมาชิกการเปลี่ยนแปลงไฟล์ที่เกิดขึ้นในรูท
  • ช่วยให้คุณสามารถสืบค้นรากสำหรับการเปลี่ยนแปลงไฟล์นับตั้งแต่คุณตรวจสอบครั้งล่าสุด หรือสถานะปัจจุบันของแผนผัง
  • สามารถดูทั้งโครงการได้

ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและใช้งาน watchman เพื่อดู (ตรวจสอบ) ไฟล์และบันทึกเมื่อมีการเปลี่ยนแปลงใน Linux นอกจากนี้ เรายังจะสาธิตโดยย่อถึงวิธีการดูไดเร็กทอรีและเรียกใช้สคริปต์เมื่อมีการเปลี่ยนแปลง

การติดตั้งบริการดูไฟล์ Watchman ใน Linux

เราจะติดตั้ง watchman บริการจากแหล่งที่มา ดังนั้นก่อนอื่นให้ติดตั้งการขึ้นต่อกันที่จำเป็นเหล่านี้ libssl-dev , การตั้งค่าอัตโนมัติ , สร้างรถยนต์ libtool , เครื่องมือตั้งค่า , หลาม-devel และ libfolly ใช้คำสั่งต่อไปนี้ในการแจกจ่าย 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' 

เมื่อติดตั้งการขึ้นต่อกันที่จำเป็นแล้ว คุณสามารถเริ่มสร้าง Watchman ได้โดยการดาวน์โหลดที่เก็บ GitHub ย้ายไปยังที่เก็บในเครื่อง กำหนดค่า สร้าง และติดตั้งโดยใช้คำสั่งต่อไปนี้

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

การดูไฟล์และไดเร็กทอรีด้วย Watchman ใน Linux

วอทช์แมน สามารถกำหนดค่าได้สองวิธี:(1) ผ่านทางบรรทัดคำสั่งในขณะที่ daemon ทำงานในพื้นหลังหรือ (2) ผ่านไฟล์การกำหนดค่าที่เขียนในรูปแบบ JSON

หากต้องการดูไดเร็กทอรี (เช่น ~/bin ) สำหรับการเปลี่ยนแปลง ให้รันคำสั่งต่อไปนี้

$ watchman watch ~/bin/
Watchman:เครื่องมือตรวจสอบการเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีประสิทธิภาพ ดูไดเรกทอรีใน Linux

คำสั่งต่อไปนี้เขียนไฟล์การกำหนดค่าชื่อ state ภายใต้ /usr/local/var/run/watchman/-state/ ในรูปแบบ JSON เช่นเดียวกับไฟล์บันทึกชื่อ log ในตำแหน่งเดียวกัน

คุณสามารถดูทั้งสองไฟล์ได้โดยใช้คำสั่ง cat ดังที่แสดง

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

คุณยังสามารถกำหนดการดำเนินการที่จะทริกเกอร์เมื่อไดเร็กทอรีถูกเฝ้าดูการเปลี่ยนแปลง ตัวอย่างเช่นในคำสั่งต่อไปนี้ 'test-trigger ‘ คือชื่อของทริกเกอร์และ ~bin/pav.sh คือสคริปต์ที่จะถูกเรียกใช้เมื่อตรวจพบการเปลี่ยนแปลงในไดเร็กทอรีที่กำลังตรวจสอบ

เพื่อวัตถุประสงค์ในการทดสอบ pav.sh script เพียงสร้างไฟล์ที่มี การประทับเวลา (เช่น file.$time.txt ) ภายในไดเร็กทอรีเดียวกันกับที่เก็บสคริปต์

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

บันทึกไฟล์และทำให้สคริปต์ปฏิบัติการได้ดังที่แสดง

$ chmod +x ~/bin/pav.sh

หากต้องการเปิดทริกเกอร์ ให้รันคำสั่งต่อไปนี้

$ watchman -- trigger ~/bin 'test-trigger' -- ~/bin/pav.sh
Watchman:เครื่องมือตรวจสอบการเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีประสิทธิภาพ สร้างทริกเกอร์ในไดเรกทอรี

เมื่อคุณดำเนินการ ยาม เพื่อจับตาดูไดเร็กทอรี ซึ่งถูกเพิ่มเข้าไปในรายการเฝ้าดู และหากต้องการดู ให้รันคำสั่งต่อไปนี้

$ watchman watch-list 
Watchman:เครื่องมือตรวจสอบการเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีประสิทธิภาพ ดูรายการเฝ้าดู

หากต้องการดูรายการทริกเกอร์สำหรับ รูท ให้รันคำสั่งต่อไปนี้ (แทนที่ ~/bin ด้วย root ชื่อ).

$ watchman trigger-list ~/bin
Watchman:เครื่องมือตรวจสอบการเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีประสิทธิภาพ แสดงรายการทริกเกอร์สำหรับรูท

ตามการกำหนดค่าข้างต้นแต่ละครั้งที่ ~/bin การเปลี่ยนแปลงไดเรกทอรี ไฟล์เช่น file.2019-03-13.23:14:17.txt ถูกสร้างขึ้นภายในและคุณสามารถดูได้โดยใช้คำสั่ง ls

$ ls
Watchman:เครื่องมือตรวจสอบการเปลี่ยนแปลงไฟล์และไดเรกทอรีที่มีประสิทธิภาพ ทดสอบการกำหนดค่า Watchman

การถอนการติดตั้งบริการ Watchman ใน Linux

หากคุณต้องการถอนการติดตั้ง watchman ให้ย้ายไปยังไดเร็กทอรีต้นทางและรันคำสั่งต่อไปนี้:

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

สำหรับข้อมูลเพิ่มเติม โปรดไปที่พื้นที่เก็บข้อมูล Watchman Github:https://github.com/facebook/watchman

คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้

  1. Swatchdog – เครื่องมือเฝ้าดูไฟล์บันทึกอย่างง่ายแบบเรียลไทม์ใน Linux
  2. 4 วิธีในการดูหรือตรวจสอบไฟล์บันทึกแบบเรียลไทม์
  3. fswatch – ตรวจสอบไฟล์และการเปลี่ยนแปลงไดเรกทอรีใน Linux
  4. Pyintify – ตรวจสอบการเปลี่ยนแปลงระบบไฟล์แบบเรียลไทม์ใน Linux
  5. Inav – ดูบันทึก Apache แบบเรียลไทม์ใน Linux

วอทช์แมน เป็นบริการดูไฟล์แบบโอเพ่นซอร์สที่จะคอยดูไฟล์และบันทึก หรือทริกเกอร์การดำเนินการเมื่อมีการเปลี่ยนแปลง ใช้แบบฟอร์มคำติชมด้านล่างเพื่อถามคำถามหรือแบ่งปันความคิดของคุณกับเรา