วิธีตรวจสอบการเข้าถึงไฟล์สำหรับแอปพลิเคชัน OS X


61

ฉันกำลังมองหา corespondent OS X ของ FileMon ที่ต่อมาถูกรวมอยู่ในProcessMon

BTW มันเป็นสิ่งสำคัญที่จะสามารถกรองตามกระบวนการ


ฉันจะเพิ่มสามตัวเลือก - เนื่องจากมรดก unix ของ Mac OS X แตกต่างจากสถาปัตยกรรม NT - เครื่องมือไม่ทับซ้อนกันอย่างสมบูรณ์ คุณกำลังมองหา API เพื่อเขียนโปรแกรมหรือเครื่องมือเพียงเพื่อมองสิ่งที่เป็นอยู่ในปัจจุบันที่เกิดขึ้น (หรือเรียกการกระทำหลังจากการเปลี่ยนแปลงไฟล์บางอย่าง)
bmike

คำตอบ:


62

เครื่องมือ - เป็นส่วนหนึ่งของชุดพัฒนา Apple Xcode - สามารถตรวจสอบการเข้าถึงและเขียนไฟล์ทั้งหมด เปิดจาก /Applications/Xcode.app/Contents/Applications/Instruments.app เลือกแอปพลิเคชันหรือกระบวนการของคุณแล้วกดเริ่ม คุณมีตัวเลือกตัวกรองมากมายในเมนู

Xcode เวอร์ชันเก่ากำลังจัดเก็บแอปที่ /Developer/Applications/Instruments.app


7
ในฐานะของ Xcode 5 ตอนนี้อยู่ใน /Applications/Xcode.app/Contents/Applications/Instruments.app - และสามารถเข้าถึงได้จากภายในแอป XCode - Xcode-> Open Developer Tool-> เครื่องมือ
Mixologic

สิ่งนี้จะไม่ทำงานหากไฟล์ที่ถูกเข้าถึงไม่ได้เกิดขึ้นเนื่องจากแอปพลิเคชันของคุณ
liquidblueocean

ที่จริงแล้วใช้ไม่ได้กับ OS X: "กิจกรรม I / O ไม่รองรับแพลตฟอร์ม macOS" อ่านเพิ่มเติมได้ที่: stackoverflow.com/questions/35621938/…

คุณช่วยให้รายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้? เครื่องมือใด - การตรวจสอบกิจกรรม ฉันเห็นผลลัพธ์ที่ยาวนานสำหรับกระบวนการทั้งหมดที่นี่ไม่แน่ใจว่าจะกรองไปยังดิสก์ i / o สำหรับหนึ่งกระบวนการได้อย่างไร
Elliott

43

opensnoopมีคำสั่งคือ ทำงานโดยไม่มีข้อโต้แย้งก็อาจครอบงำคุณกับการส่งออก แต่ก็สามารถทำงานได้มีข้อโต้แย้ง-n nameที่จะ จำกัด nameการส่งออกไปยังกระบวนการชื่อ


1
ในทำนองเดียวกันsudo opensnoop | grep .classpathจะช่วยให้คุณเข้าถึงไฟล์ classpath เช่น
Dávid Natingga

1
หมายเหตุ opennoop และเครื่องมือต่าง ๆ มีส่วนหน้ากับเครื่องยนต์ DTrace เดียวกัน ปลายด้านหน้าอื่น ๆ : dtrace.org/blogs/brendan/2011/10/10/...
มีนาคม

13

Launchd เป็นเครื่องมือระดับระบบหลักสำหรับการตรวจสอบไฟล์ (และโฟลเดอร์เป็นไฟล์พิเศษ) เนื่องจากมันทำงานอยู่เสมอ สีน้ำตาลแดงเป็นหนึ่งในโปรแกรมที่ช่วยวาง GUI ที่สวยงามรอบ ๆ LaunchD WatchPaths ดูที่นี่สำหรับเคล็ดลับมากมายในการเปิดตัวเช่นเดียวกับการสอนหลายร้อยบทความวิกิพีเดียที่ดีและเอกสาร dev dev ของ Apple

fseventsd จะบันทึกการเปลี่ยนแปลงบางอย่าง - ดังนั้นคุณอาจใช้FSeventerหรือเข้าถึงไฟล์เหล่านั้นถ้า launchd ไม่ใช่ถ้วยชาของคุณ

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


ฉันใช้ FSEventer หลายครั้งเพื่อค้นหาว่าแอปพลิเคชันเข้าถึงอะไร นี่เป็นสิ่งที่ยอดเยี่ยมเมื่อมองหาไฟล์ลิขสิทธิ์สำหรับการสร้างภาพระบบสำหรับการปรับใช้ห้องปฏิบัติการ
Digitalchild

fseventer ยอดเยี่ยมมากที่มีภาพรวมเรียลไทม์คุณเห็นว่าเกิดอะไรขึ้น!
ling

1
เนื่องจาก FSeventer นั้นตายแล้วเราสามารถลองFSMonitor ได้เช่นกัน
GDP2

10

ไม่มีใครพูดถึงการตรวจสอบกิจกรรมที่พบใน/Applications/Utilitiesโฟลเดอร์

คลิกที่ชื่อกระบวนการในรายการจากนั้นกดปุ่ม "ตรวจสอบ" บนแถบเครื่องมือ

Memoryมีสามแท็บในหน้าต่างที่เกิดขึ้นคือ: Statistics, Open Files and Ports, Open Files and Portsแท็บจะแสดงเปิดไฟล์ทั้งหมดจะถูกนำมาใช้โดยกระบวนการ


1
ไม่สามารถใช้งานได้หากแอปพลิเคชันที่ไม่รู้จักเข้าถึงไฟล์ได้
liquidblueocean

3

lsof

คำสั่งใน Terminal.app สามารถทำเพื่อคุณหรือไม่ ใช้man lsofเพื่อให้ทันกับการใช้งานของมัน ไชโย


3

วิธีที่เร็วกว่าคือ:

$ lsof [path_to_file]

โซลูชันนี้ไม่จำเป็นต้องใช้รหัสผ่านรูทและให้ผลลัพธ์ดังต่อไปนี้ชัดเจนผลลัพธ์:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg

1

ยังมีอยู่iosnoopและiotopขึ้นอยู่กับความต้องการเฉพาะของคุณ คำสั่งเทอร์มินัลเหล่านี้สามารถไพพ์ผ่านgrepเพื่อเฝ้าดูเหตุการณ์ระบบไฟล์จากกระบวนการเฉพาะหรือต่อไฟล์ที่ระบุ


0

มีส่วนต่อประสานกราฟิกในการlsofพิมพ์ข้อมูล มัน donationware จาก HAMSoft และมันเรียกว่าอะไรที่ทำให้ฉัน ออกแบบมาเพื่อตอบว่า "ทำไมฉันไม่สามารถลบสิ่งนี้ออกจากถังขยะของฉันได้" คำถามที่เกิดขึ้นบ่อยใน OS X มันก็เป็นวิธีที่สะดวกในการดู I / O ที่เปิดในการทำงานหากคุณอยากรู้ว่าเกิดอะไรขึ้น ช่วยให้คุณค้นหาและกรองได้ง่าย

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