วอทช์แมน เป็นบริการดูไฟล์โอเพ่นซอร์สและข้ามแพลตฟอร์มที่รับชมไฟล์และบันทึกหรือดำเนินการเมื่อมีการเปลี่ยนแปลง ได้รับการพัฒนาโดย 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/
ดูไดเรกทอรีใน Linux
คำสั่งต่อไปนี้เขียนไฟล์การกำหนดค่าชื่อ 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 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 watch-list
ดูรายการเฝ้าดู
หากต้องการดูรายการทริกเกอร์สำหรับ รูท ให้รันคำสั่งต่อไปนี้ (แทนที่ ~/bin ด้วย root ชื่อ).
$ watchman trigger-list ~/bin
แสดงรายการทริกเกอร์สำหรับรูท
ตามการกำหนดค่าข้างต้นแต่ละครั้งที่ ~/bin การเปลี่ยนแปลงไดเรกทอรี ไฟล์เช่น file.2019-03-13.23:14:17.txt ถูกสร้างขึ้นภายในและคุณสามารถดูได้โดยใช้คำสั่ง ls
$ ls
ทดสอบการกำหนดค่า 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
คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้
- Swatchdog – เครื่องมือเฝ้าดูไฟล์บันทึกอย่างง่ายแบบเรียลไทม์ใน Linux
- 4 วิธีในการดูหรือตรวจสอบไฟล์บันทึกแบบเรียลไทม์
- fswatch – ตรวจสอบไฟล์และการเปลี่ยนแปลงไดเรกทอรีใน Linux
- Pyintify – ตรวจสอบการเปลี่ยนแปลงระบบไฟล์แบบเรียลไทม์ใน Linux
- Inav – ดูบันทึก Apache แบบเรียลไทม์ใน Linux
วอทช์แมน เป็นบริการดูไฟล์แบบโอเพ่นซอร์สที่จะคอยดูไฟล์และบันทึก หรือทริกเกอร์การดำเนินการเมื่อมีการเปลี่ยนแปลง ใช้แบบฟอร์มคำติชมด้านล่างเพื่อถามคำถามหรือแบ่งปันความคิดของคุณกับเรา