ค้นหาว่ากระบวนการใดที่กำลังเขียนลงในไดเรกทอรีเฉพาะ


19

ฉันมีไดเรกทอรี / บางส่วน / dir และฉันเห็นว่ามีไฟล์ใหม่ปรากฏขึ้นที่นั่นตลอดเวลา ฉันจะค้นหากระบวนการที่กำลังสร้างไฟล์เหล่านั้นได้อย่างไร

คำตอบ:


18

ลองlsof +r2 | grep '/some/dir'ดู นี่จะแสดงกระบวนการเข้าถึง/ some / dirและรีเฟรชทุก 2 วินาที


2
ยังไงก็ตาม, มันค่อนข้างใกล้กับสิ่งที่ฉันต้องการ, เพราะมันจะสร้างรายการทั้งหมดของไฟล์ที่เปิดอยู่ก่อน, จากนั้นกรองโดย / some / dir อย่างไรก็ตามหากกระบวนการสร้างไฟล์อย่างรวดเร็วและไม่เปิดไว้ฉันเข้าใจว่าอาจพลาดบางอย่างได้ ฉันคิดว่าในกรณีนั้นตัวเลือกเดียวคือระบบย่อยการตรวจสอบใช่มั้ย
homer5439

สมมติฐานของคุณถูกต้อง อีกแนวคิดหนึ่งคือใช้ inotifywait ให้ดูlinux.die.net/man/1/inotifywait
weeheavy

ขอบคุณฉันเคยพิจารณา inotify เครื่องมือก่อน แต่ฉันพบว่าพวกเขาทำงานอย่างหมดจดในระดับระบบแฟ้มและดูเหมือนจะไม่สามารถให้ข้อมูลเกี่ยวกับผู้ที่ทำอะไร
homer5439

18

ใช้auditระบบย่อยเคอร์เนล

auditctl -w /some/dir/ -p war -k whatsgoingon

ที่ตั้งค่าเบ็ดรอสิ่งที่เกิดขึ้นภายใต้ / some / dir /

จากนั้นตรวจสอบให้แน่ใจว่าคุณมีauditdดีมอนทำงานอยู่ หลังจากนั้นรอจนกว่าไฟล์จะปรากฏขึ้นและดูจาก/var/log/auditd.logหรือที่ใดก็ตามในระบบของคุณเขียนและอ่านสิ่งที่เกิดขึ้นและตามกระบวนการใด


ขอบคุณดูเหมือนว่าจะเป็นอย่างนั้นแม้ว่าจะต้องใช้เครื่องมือตรวจสอบที่ติดตั้งซึ่งอาจไม่ได้อยู่ทุกที่ตามค่าเริ่มต้น แต่ตกลงถ้าต้องการข้อมูลนั้นพวกเขาสามารถติดตั้งได้เสมอ
homer5439

หมายเหตุสำหรับผู้ที่เห็นสิ่งนี้: คุณไม่สามารถวางนาฬิกาบนไดเรกทอรีระดับบนสุด (ห้ามเคอร์เนล)
Tony Sepia

1
นั่นเป็นวิธีที่มีประสิทธิภาพจริงๆ! ขอบคุณมาก!!! BTW auditctl -Dเมื่อคุณทำเสร็จแล้วคุณสามารถเอาตะขอทั้งหมดที่จะหลีกเลี่ยงการเขียนบันทึกการตรวจสอบตลอดไปโดย คุณสามารถใช้auditctl -lเพื่อแสดง hooks ทั้งหมด
Robert

0

lsof สามารถช่วย:

# lsof -r1 /some/dir/*

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