รายการหรือปรับปรุงเนื้อหาของไดเรกทอรีเมื่อมีการแก้ไข (เช่นไฟล์ใหม่ที่สร้างขึ้นหรือลบไฟล์) ไปยังไฟล์ข้อความ


0

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

#!/bin/sh
while inotifywait -qqe modify path-of-directory ; do 
ls > path-of-text-file;
done

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


ด้วยวิธีง่ายๆ > การเปลี่ยนเส้นทางไฟล์จะถูกเขียนทับเมื่อมีการเปลี่ยนแปลงใด ๆ
Seth

คำตอบ:


0

คู่มือนี้ กล่าวว่า modify ทริกเกอร์เมื่อไฟล์ถูกเขียนไป คุณอาจต้องการตรวจสอบ create, delete และ move เหตุการณ์ที่เกิดขึ้น

ตรวจสอบ คำตอบที่ซับซ้อนยิ่งขึ้นสำหรับคำถามที่คล้ายกันนี้ . มี nohup คำสั่งดังกล่าวมี คำสั่งที่มีประโยชน์อื่นอาจเป็น disown.


ฉันคิดว่าวนรอบ inotifywait อาจพลาดเหตุการณ์เมื่อเกิดขึ้นระหว่างการดำเนินการ ls (เพราะไม่มี inotifywait ทำงานในช่วงเวลาที่แน่นอนนี้) มี -m และ -d ตัวเลือกพวกเขาไม่ควรพลาดอะไร วิธีการนี้น่าเชื่อถือมากกว่านี้เล็กน้อย:

inotifywait -me create,delete,move path-of-directory | while read a ; do ls > path-of-text-file; done

ตอนนี้ inotifywait -m ทำงานตลอดเวลาและส่งข้อความหนึ่งบรรทัดต่อเหตุการณ์ที่ตรวจพบ จากนั้นทุกบรรทัดดังกล่าวทำให้เกิด ls ที่จะเรียกใช้


ทางออกอื่นจะเป็น iwatch และภูตของมัน แน่นอนว่าการตั้งค่า daemon ต้องการการเข้าถึงรูท อ่าน คำตอบของฉันสำหรับคำถามอื่น และปรับให้เข้ากับความต้องการของคุณ

นอกจากนี้คุณอาจจะสนใจ LoggedFS - การตรวจสอบระบบไฟล์ด้วย FUSE .


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

@Nobody ปุ่มลบอาจ mv ไฟล์ไปที่ถังขยะหรือมากกว่านั้น ลองเพิ่ม move กิจกรรมในรายการ (เช่นจะเป็น create,delete,move ) อัปเดตคำตอบแล้ว
Kamil Maciorowski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.