ปัญหาของฉันคือเมื่อ
lsof -p pid
ฉันสามารถค้นหารายการของไฟล์ที่เปิดของกระบวนการที่ id กระบวนการเป็น pid แต่มีวิธีหาออฟเซ็ตไฟล์ของไฟล์ที่เข้าถึงแต่ละไฟล์หรือไม่?
กรุณาให้คำแนะนำกับฉัน?
ปัญหาของฉันคือเมื่อ
lsof -p pid
ฉันสามารถค้นหารายการของไฟล์ที่เปิดของกระบวนการที่ id กระบวนการเป็น pid แต่มีวิธีหาออฟเซ็ตไฟล์ของไฟล์ที่เข้าถึงแต่ละไฟล์หรือไม่?
กรุณาให้คำแนะนำกับฉัน?
คำตอบ:
บน Linux คุณสามารถหาตำแหน่งของหมายเลขไฟล์อธิบายN
ของกระบวนการในPID
/proc/$PID/fdinfo/$N
ตัวอย่าง:
$ cat /proc/687705/fdinfo/36
pos: 26088
flags: 0100001
ไฟล์เดียวกันสามารถเปิดได้หลายครั้งโดยมีตำแหน่งที่แตกต่างกันโดยใช้ตัวอธิบายไฟล์หลายตัวดังนั้นคุณจะต้องเลือกไฟล์ที่เกี่ยวข้องในกรณีที่มีมากกว่าหนึ่งไฟล์ ใช้:
$ readlink /proc/$PID/fd/$N
เพื่อให้รู้ว่าไฟล์ใดที่แนบไฟล์ descriptor ที่เกี่ยวข้อง (อาจไม่ใช่ไฟล์ในกรณีนี้ symlink ห้อยอยู่)
lsof
สามารถทำได้ด้วย-o
ตัวเลือก
ภายใต้ Linux จะรับข้อมูลจาก/proc
เพื่อให้คุณสามารถรับข้อมูลได้เช่นกัน