การเปลี่ยนแปลงไฟล์การมอนิเตอร์ + การเข้าถึงไฟล์


19

ฉันต้องการที่จะเห็นสิ่งที่เกิดขึ้นในโฟลเดอร์เซิร์ฟเวอร์แอปของฉันคือไฟล์ใดบ้างที่ถูกเปลี่ยนแปลงโดยกระบวนการ x หรือ*.warไฟล์ใดที่มีการเปลี่ยนแปลง (แทนที่ / สร้าง) ในช่วง x นาทีสุดท้าย

มีเครื่องมือใน Linux เพื่อช่วยในเรื่องนี้หรือไม่?


สวัสดีลองดูคู่มือนี้เพื่อตั้งค่า auditd เพื่อตรวจสอบไดเรกทอรีและไฟล์xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux

1
ฉันได้รับคำถามนี้ผ่านการค้นหาโดย Google แต่ฉันพบคำตอบของฉันที่นี่: unix.stackexchange.com/questions/18844/…
Quentin Skousen

ลองดูที่ SystemTap uselessuseofcat.com/?p=281
สตีฟ

คำตอบ:


9

ขึ้นอยู่กับความต้องการที่แน่นอนของคุณคุณอาจต้องการพิจารณาแก้ปัญหาinotifyและ / หรือFAM / GAMIN


14

Strace (ตามที่ระบุไว้ข้างต้น) เป็นวิธีหนึ่งในการตรวจสอบการทำงานของซอฟต์แวร์ที่ใช้งานที่ระบุ

คำสั่งบางอย่างเช่นwatch find dir/ -mmin 1อาจช่วยตรวจสอบการเปลี่ยนแปลงของนาทีที่ผ่านมาในบางไดเรกทอรี

inotify-toolsอาจเป็นเครื่องมือการค้าอีกอย่างหนึ่งทั้งนี้ขึ้นอยู่กับสิ่งที่คุณกำลังมองหา

ตัวอย่างเช่นinotifywait -mr dir/ตรวจสอบการเปลี่ยนแปลงในไดเรกทอรีที่กำหนดและให้ข้อเสนอแนะแก่คุณเกี่ยวกับแอปพลิเคชันที่พยายามเปิด / อ่าน / เขียน / ปิดไฟล์ทันที อย่างไรก็ตาม inotify ไม่ได้ให้คำติชมเกี่ยวกับแอปพลิเคชันหรือกระบวนการที่กำลังเข้าถึงไฟล์ - ซึ่งเป็นสิ่งที่ strace ทำได้

โปรดทราบว่าการตรวจสอบระดับระบบมักใช้อย่าง จำกัด สำหรับซอฟต์แวร์จาวาที่ทำงานอยู่ในสภาพแวดล้อมของแอพพลิเคชันคอนเทนเนอร์เนื่องจากคุณจะเห็นเฉพาะคอนเทนเนอร์ (เช่น Tomcat) แต่ไม่ใช่แอปพลิเคชันจริง (เช่น. war) ที่มีปฏิสัมพันธ์กับระบบ


8

คุณสามารถรับข้อมูลเกี่ยวกับไฟล์ที่เข้าถึงได้โดยกระบวนการโดยlsof :

 lsof -n -p `pidof your_app`

และข้อรองคุณสามารถรับ pid ของกระบวนการที่เขียน / อ่านไฟล์บางไฟล์:

 lsof -n -t file

6

คุณสามารถใช้straceเพื่อตรวจสอบการเรียกระบบทั้งหมดของกระบวนการซึ่งรวมถึงการเข้าถึงไฟล์ทั้งหมด

เมื่อเริ่มต้นโปรแกรม:

$ strace ./myserver

คุณยังสามารถแนบ strace กับกระบวนการทำงานผ่าน PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859

จะดีในการตรวจสอบด้วยโฟลเดอร์ไม่ PID ขอบคุณ btw strace -p PID ใช้ได้กับฉันใน Ubuntu
Martin V.

0

watch find dir/ -mmin 1 ไม่ทำงานสำหรับฉันสิ่งที่เป็นเพียงการคัดลอกและความแตกต่าง:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

มันค่อนข้างใช้ทรัพยากรมาก แต่มันแสดงการเปลี่ยนแปลงทั้งหมดระหว่างสแน็ปช็อตและdiffเวลา

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