จะหาไฟล์ออฟเซ็ตของไฟล์ที่เปิดอยู่ได้อย่างไร?


26

ปัญหาของฉันคือเมื่อ lsof -p pid ฉันสามารถค้นหารายการของไฟล์ที่เปิดของกระบวนการที่ id กระบวนการเป็น pid แต่มีวิธีหาออฟเซ็ตไฟล์ของไฟล์ที่เข้าถึงแต่ละไฟล์หรือไม่?

กรุณาให้คำแนะนำกับฉัน?

คำตอบ:


38

บน Linux คุณสามารถหาตำแหน่งของหมายเลขไฟล์อธิบายNของกระบวนการในPID /proc/$PID/fdinfo/$Nตัวอย่าง:

$ cat /proc/687705/fdinfo/36
pos:    26088
flags:  0100001

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

$ readlink /proc/$PID/fd/$N

เพื่อให้รู้ว่าไฟล์ใดที่แนบไฟล์ descriptor ที่เกี่ยวข้อง (อาจไม่ใช่ไฟล์ในกรณีนี้ symlink ห้อยอยู่)


1
คำตอบของคุณยอดเยี่ยม
Ta Thanh Dinh

12

lsofสามารถทำได้ด้วย-oตัวเลือก

ภายใต้ Linux จะรับข้อมูลจาก/procเพื่อให้คุณสามารถรับข้อมูลได้เช่นกัน


เป็นเวลานานแล้วตั้งแต่คำถามสุดท้ายของฉันและฉันไม่ได้อยู่ที่นี่มานานแล้ว ขอบคุณสำหรับคำตอบ
Ta Thanh Dinh

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