เชลล์สคริปต์สามารถรอให้ไฟล์เปลี่ยนแปลงและดำเนินการได้หรือไม่?


12

ฉันสงสัยว่าฉันสามารถเขียนสคริปต์ที่จะตรวจสอบการเปลี่ยนแปลงในไฟล์และดำเนินการบางอย่างเมื่อตรวจพบการเปลี่ยนแปลงหรือไม่

คำอธิบายโดยละเอียด:

  1. OpenVPN เขียนสถานะลงในไฟล์ทุก ๆ 1 นาที
  2. ฉันต้องแจงไฟล์สถานะนี้แล้วดำเนินการ
  3. OpenVPN ตัดทอนไฟล์สถานะก่อนที่จะเขียนลงไป
  4. ฉันลองเขียนไปที่ไปป์ที่มีชื่อ แต่ฉันพบข้อผิดพลาดที่ไม่พึงประสงค์ (แต่ไม่ถึงตาย) ในแอพเมื่อไม่สามารถตัดทอนได้

ในกรณีที่มีการดัดแปลงต่อท้ายไฟล์จริง ๆ แล้วการแขวนบนtail -fอาจเป็นวิธีที่ง่ายที่สุด แต่สำหรับต่อท้ายเท่านั้น
เอสเอฟ

คำตอบ:


21

สกปรกวิธี Price:

วนstat -c %Y fileซ้ำและดำเนินการเมื่อเวลาการแก้ไขเปลี่ยนแปลง

น่าจะดีกว่า:

ใช้บริการ inotify cron เพื่อเฝ้าดูเหตุการณ์การแก้ไขไฟล์และทำการกระทำของคุณ:

/path/to/your/file IN_MODIFY /path/to/your/script $#

+1 สำหรับโซลูชันที่สอง
Michael Lowman


2

inotify จะเป็นวิธีที่เหมาะสมในการทำ มีการสอนใน LinuxForYou ฉบับนิตยสารสำหรับคำถามนี้


0

ดังนั้นมีสคริปต์ที่:

1) ตรวจสอบเวลาการแก้ไขไฟล์ (พร้อมสถานะ)
2) หากเวลาการแก้ไขใหม่กว่าเมื่อตรวจสอบครั้งล่าสุดจะมีการเปลี่ยนแปลง
3) แยกวิเคราะห์และดำเนินการของคุณ
4) Else sleep เป็นเวลา 1 นาทีจากนั้นโหลดซ้ำ


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