ฉันกำลังเขียนสคริปต์ทุบตีเพื่อใช้inotifywait
ในการตรวจสอบไดเรกทอรีและเริ่มดำเนินการเมื่อตรวจพบการเปลี่ยนแปลง สิ่งที่ต้องการ:
inotifywait -m ... | while read f; do something; done
เนื่องจากinotifywait
ไม่ได้ยุติลงเองสคริปต์นี้จะไม่หยุด
ดังนั้นแผนของฉันคือรับ PID ของกระบวนการ inotifywait บันทึกลงในไฟล์และมีกระบวนการอื่นฆ่ามันในภายหลังเช่น:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
แต่ฉันไม่รู้วิธีรับ PID มีวิธีง่ายๆในการบรรลุเป้าหมายนี้หรือไม่? อีกวิธีหนึ่งก็คือการบันทึก PID ของเชลล์สคริปต์$$
ไปยังไฟล์และฆ่าเชลล์สคริปต์ทั้งหมด แต่ฉันต้องการล้างข้อมูลบางอย่างหลังจากวนลูป
ฉันลองใช้coproc
แล้วฉันคิดว่ามันใช้งานได้ แต่ดูเหมือนว่าจะซับซ้อนกว่าที่จำเป็น
pgrep inotifywait
แทนของระเบียบว่าเพียงแค่ทำ นั่นจะให้ PID ฆ่าpkill inotifwait
คุณ
grep -v grep
แทนps -ef | grep [p]rocessname...
จะทำเช่นเดียวกัน
-f
สวิตช์ได้หากคุณต้องการจับคู่กับชื่อไฟล์เรียกทำงานที่มากขึ้น