เทียบเท่ากับ SysInternals FileMon สำหรับ Linux?


13

ฉันพยายามดีบักแอปพลิเคชั่นบน Ubuntu - ฉันจำเป็นต้องฟังความพยายามในการเปิดไฟล์ (แม้กระทั่งไฟล์ที่ไม่มีอยู่)

Process Monitor (ชื่อเดิมคือFileMon ) มีให้บริการบน Windows - มีอะไรบ้างบนสายพานยูทิลิตี้ของ Ubuntu?

ขอบคุณ!

แอชลีย์

คำตอบ:


7

คุณกำลังมองหา strace ดูที่นี่: https://wiki.ubuntu.com/Strace


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

8

ขึ้นอยู่กับสิ่งที่คุณต้องการ:

  • ในขนาดใหญ่คุณต้องการดูinotifyเพื่อดูการเข้าถึงไฟล์ทั้งหมดที่กระบวนการทำ

  • ในขนาดเล็ก strace จะช่วยให้คุณดู syscalls กระบวนการเฉพาะทำให้ Strace สวยมาก คุณสามารถติดตามการเรียกของกระบวนการเพื่อ 'เปิด' โดยทำstrace -f -eopen $cmdเช่น หน้าคนมีรายละเอียดเกี่ยวกับไวยากรณ์ของหลักสูตร


ขอบคุณ pjz เจาะจงมาก - ฉันมีปัญหาในการเริ่มต้นใช้งาน Ogre3d บน Ubuntu แอปพลิเคชันทดสอบของฉันดูเหมือนจะมองหาไฟล์. cfg บางไฟล์ในระหว่างการเริ่มระบบ ฉันต้องการฟังความพยายามในการเปิดไฟล์ทั้งหมดดังนั้นฉันจึงมั่นใจได้ว่าไฟล์ที่ถูกต้องพร้อมใช้งานและมีสิทธิ์ที่ถูกต้อง
chickeninabiscuit

strace -e open ./app
Justin

2

straceเบื้องหน้าแอพพลิเคชั่นเริ่มต้นนั้นดีที่จะดูว่าแอพกำลังทำอะไรอยู่
lsofดีใจที่ได้เห็นไฟล์ที่แอพที่ใช้งานอยู่กำลังใช้งานอยู่

BTW:
lsof -ni:22แสดงว่ากระบวนการใดกำลังใช้พอร์ต 22



1

นี่คือตัวอย่างของการใช้ strace เพื่อติดตามการเปลี่ยนแปลงไฟล์:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fตรวจสอบให้แน่ใจว่าเหตุการณ์จากกระบวนการลูกถูกจับ
-e trace=fileบอกว่าเราควรจะจับ syscalls ไฟล์ที่เกี่ยวข้อง (เช่นstat, open, futexฯลฯ )
-pเป็นกระบวนการ ID (ที่ดึงมาจากps -auxหรือวิธีการอื่น) -oที่ระบุ outputfile (อาจจะมีข้อมูลจำนวนมากและคุณสามารถใช้แทน grep เป็นตัวกรอง




0

นี่เป็นรุ่นเก่า แต่ฉันคิดว่าเป็นความคิดที่ดีที่จะอัปเดตสำหรับความเป็นจริงในปัจจุบัน

สำหรับการดีบักเพียงกระบวนการเดียวและลูก ๆ ของพวกเขา strace ยังคงเป็นวิธีที่ดีที่สุด มันสามารถแสดงไฟล์ acess ทั้งหมดได้อย่างง่ายดายแม้ในไฟล์ที่หายไป

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

นี่คือกุยง่ายๆสำหรับการใช้งาน:

การตรวจสอบ GUI

สิ่งนี้ทำซ้ำ windows filemon ตรวจสอบ acess ไฟล์สำหรับทุกสถานที่กระบวนการ ฯลฯ

ตรวจสอบโพสต์นี้ด้วย


0

นี่คือสิ่งที่ทำงานได้ดีสำหรับฉัน (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

ไม่แน่ใจว่าทำไมถึง2>&1ต้องการ แต่มันไม่ได้กรองถ้าฉันใช้มัน

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