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/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
คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้
- Swatchdog – เครื่องมือเฝ้าดูไฟล์บันทึกอย่างง่ายแบบเรียลไทม์ใน Linux
- 4 วิธีในการดูหรือตรวจสอบไฟล์บันทึกแบบเรียลไทม์
- fswatch – ตรวจสอบไฟล์และการเปลี่ยนแปลงไดเรกทอรีใน Linux
- Pyintify – ตรวจสอบการเปลี่ยนแปลงระบบไฟล์แบบเรียลไทม์ใน Linux
- Inav – ดูบันทึก Apache แบบเรียลไทม์ใน Linux
Watchman เป็นบริการดูไฟล์แบบโอเพ่นซอร์สที่เฝ้าดูไฟล์และบันทึก หรือทริกเกอร์การดำเนินการเมื่อมีการเปลี่ยนแปลง ใช้แบบฟอร์มคำติชมด้านล่างเพื่อถามคำถามหรือแบ่งปันความคิดของคุณกับเรา