วิธีการวางทริกเกอร์ในไดเรกทอรี


25

ฉันมีสคริปต์ที่สแกนไดเรกทอรีและทำการบำรุงรักษาไฟล์ในนั้น อีกกระบวนการสร้างไฟล์ในไดเรกทอรี (10 - 30 ไฟล์ต่อวัน)

สคริปต์ถูกเรียกผ่านงาน cron รายวัน สิ่งที่ฉันต้องการคือการเรียกสคริปต์ในเหตุการณ์ (ทุกครั้งที่มีการสร้างไฟล์ใหม่ในไดเรกทอรี) ฉันชอบสิ่งนี้มากกว่าการเพิ่มความถี่ของงาน cron

ฉันจะทำสิ่งนั้นได้อย่างไร มีคำสั่งหรือโปรแกรมติดตั้งหรือไม่

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ

คำตอบ:


23

inoticoming

inoticoming เป็น daemon ในการดูไดเรกทอรีที่มี inotify framework ของ Linux และทริกเกอร์แอ็คชันเมื่อไฟล์ที่มีชื่อเฉพาะถูกวางไว้ในนั้น

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

incron

incron เป็นระบบ "inotify cron" มันทำงานเหมือน cron ปกติ แต่ถูกขับเคลื่อนโดยเหตุการณ์ระบบไฟล์แทนเหตุการณ์เวลา แพคเกจนี้มีสองโปรแกรม daemon เรียกว่า "incrond" (คล้ายกับ crond) และตัวจัดการตาราง "incrontab" (เช่น "crontab")

incron ใช้เคอร์เนล Linux inotify syscalls

เช่น cron ผู้ใช้แต่ละคนสามารถแก้ไขตาราง incron ของตัวเอง


2
คุณช่วยยกตัวอย่างได้ไหม เชื่อมโยงไปยังหน้าเว็บที่ใช้ยินดีต้อนรับเกินไปฉันไม่สามารถหาหนึ่งสำหรับincronการinoticomingอย่างใดอย่างหนึ่งคือที่นี่
Lekensteyn

สำหรับ incron ดู manpages of incrond, incrontab และ incron.conf
Florian Diesch

2
ฉันได้แก้ไขคำตอบของคุณในแบบที่ฉันต้องการเห็น ผมคัดลอกจากรายละเอียดแพคเกจกรุณาจะเป็นอย่างนั้นอย่างกว้างขวางในอนาคตเมื่อการตั้งชื่อโปรแกรม :)
Lekensteyn

4

นอกจากนี้ยังมีโปรแกรมขนาดเล็กที่เรียกว่าiwatch- ดูman page ( หน้านี้มีไว้สำหรับ Ubuntu ที่แม่นยำ (12.04) แต่ก็มีลิงก์ไปยังรุ่นอื่น ๆ ของ Ubuntu)

iwatch มีความสามารถในการดูโฟลเดอร์แบบเรียกซ้ำ (เช่น: โฟลเดอร์ย่อยด้วย) และเพื่อส่งอีเมลเพื่อตอบกลับเหตุการณ์ไฟล์ / ไดเรกทอรี


3

สิ่งที่ควรรู้อีกอย่างคือยูทิลิตีfileschanged( man page here ) ซึ่งสามารถมอนิเตอร์เหตุการณ์ของระบบไฟล์บนไฟล์หรือไดเรกทอรีที่เลือกตัวอย่างเช่นคำสั่งต่อไปนี้

fileschanged -s created -t1 $PWD

ควรตรวจสอบไดเรกทอรีปัจจุบันสำหรับเหตุการณ์การสร้างไฟล์เขียนชื่อของไฟล์ที่สร้างขึ้นstdoutด้วยการหมดเวลา 1 วินาที

fileschangedสามารถดูโฟล์เดอร์ (ที่สามารถiwatchตามที่ระบุไว้ในคำตอบอื่น) ซึ่งแตกต่างและincroninoticoming


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.