ค้นพบสิ่งที่แอปหรือกระบวนการโต้ตอบกับไฟล์ใน Mac OS X

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

lsof /path/to/filename

ตัวอย่างเช่นเพื่อดูว่ามีอะไรโต้ตอบกับ /var/log/system.log เราชี้ไปที่ไฟล์นั้น:

$ lsof /var/log/system.log
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Console 84281 Will 8r REG 14, 2 140239 71929128 /private/var/log/system.log

ในกรณีนี้ app ที่ใช้ system.log คือ "Console" อีกครั้งเราจะแสดงภาพทันทีในขณะที่คำสั่ง lsof ถูกเรียกใช้งาน แต่โดยการใช้คำสั่ง opensnoop ที่กล่าวถึงก่อนหน้านี้แทนคุณสามารถทำตามขั้นตอนที่ใช้ไฟล์นั้นแบบเรียลไทม์:

sudo opensnoop -f /var/log/system.log

ข้างต้นจะทำให้เห็นบางอย่างเช่นนี้
$ sudo opensnoop -f /var/log/system.log
Password:
UID PID COMM FD PATH
501 84358 cat 3 /var/log/system.log
501 45411 console 3 /var/log/system.log
0 15 syslogd 16 /var/log/system.log

ในกรณีนี้คุณกำลังดูคำว่า "COMM" สำหรับชื่อกระบวนการหรือ PID สำหรับ id กระบวนการ

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