ค้นหาเว็บไซต์

Watchman - เครื่องมือดูไฟล์และไดเร็กทอรีสำหรับการเปลี่ยนแปลง


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

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

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

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

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

เราจะติดตั้งบริการ watchman จากแหล่งที่มา ดังนั้นก่อนอื่นให้ติดตั้งการพึ่งพาที่จำเป็นเหล่านี้ libssl-dev, autoconf, automake libtool, setuptools, python-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

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

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

watchman watch ~/bin/

คำสั่งต่อไปนี้เขียนไฟล์การกำหนดค่าชื่อ 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 เพียงสร้างไฟล์ที่มี การประทับเวลา (เช่น 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 

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

watchman trigger-list ~/bin

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

ls

ถอนการติดตั้งบริการ 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

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