Bagaimana cara memonitor akses file untuk aplikasi OS X?

62

Saya mencari koresponden OS X dari FileMon, yang kemudian disertakan dalam ProcessMon .

BTW, sangat penting untuk dapat memfilter dengan proses.

Sorin
sumber
Saya akan menambahkan tiga opsi - karena warisan unix Mac OS X berbeda dari arsitektur NT - alat tidak tumpang tindih dengan sempurna. Apakah Anda mencari API untuk diprogram atau hanya alat untuk mengintip apa yang sedang terjadi (atau memicu tindakan setelah perubahan file tertentu)
bmike

Jawaban:

62

Instrumen — bagian dari rangkaian pengembangan Apple Xcode — dapat memonitor semua akses file dan penulisan. Buka dari /Applications/Xcode.app/Contents/Applications/Instruments.app, pilih aplikasi atau proses Anda, dan tekan Mulai. Anda memiliki opsi filter yang luas tersedia di menu.

Versi lama dari Xcode menyimpan Aplikasi di /Developer/Applications/Instruments.app

Aeyoun
sumber
7
Pada Xcode 5, ini sekarang berada di /Applications/Xcode.app/Contents/Applications/Instruments.app - dan juga dapat dijangkau dari dalam aplikasi XCode - Xcode-> Buka Alat Pengembang-> Instrumen.
Mixologic
Ini tidak berfungsi jika file yang sedang diakses tidak terjadi karena aplikasi Anda
liquidblueocean
Sebenarnya itu tidak berfungsi untuk OS X: "Aktivitas I / O tidak mendukung platform macOS". Baca juga: stackoverflow.com/questions/35621938/…
JHG
Bisakah Anda memberikan rincian lebih lanjut tentang ini? Instrumen mana - Monitor Aktivitas? Saya melihat keluaran panjang untuk semua proses di sini, tidak yakin bagaimana memfilternya ke disk i / o untuk satu proses
Elliott
44

Ada perintahnya opensnoop. Jalankan tanpa argumen, itu mungkin membanjiri Anda dengan output, tetapi bisa dijalankan dengan argumen -n nameuntuk membatasi output ke proses yang disebutkan name.

Harald Hanche-Olsen
sumber
1
Demikian pula sudo opensnoop | grep .classpathmemberi Anda akses ke file classpath misalnya.
Dávid Natingga
1
Note opensnoop dan Instruments keduanya ujung depan untuk mesin DTrace yang sama. Front-end lainnya: dtrace.org/blogs/brendan/2011/10/10/…
MarcH
13

Launchd adalah alat tingkat sistem utama untuk memantau file (dan folder adalah file khusus) karena selalu berjalan. Hazel adalah salah satu program yang membantu menempatkan GUI cantik di sekitar WatchPaths launchd. Lihat di sini untuk banyak tips tentang launchd serta ratusan tutorial, artikel wikipedia yang bagus dan dokumen pengembang Apple.

fseventsd akan mencatat beberapa perubahan - jadi Anda dapat menggunakan FSeventer atau mengakses file-file tersebut jika launchd bukan secangkir teh Anda.

fs_usage dan lsof adalah alat baris perintah proses sadar untuk memanfaatkan subsistem IO saat sedang berjalan. Buffer fs_usage bisa kelebihan beban jadi jika Anda menginginkan sesuatu yang lebih terjamin dan lebih sedikit "take a mengintip cepat" itu kurang dapat diandalkan untuk hasil total yang benar seperti perintah lainnya.

bmike
sumber
Saya telah menggunakan FSEventer beberapa kali untuk mengetahui aplikasi apa yang diakses. Ini bagus ketika mencari file lisensi untuk pencitraan sistem untuk penyebaran laboratorium.
Digitalchild
fseventer sangat baik untuk memiliki gambaran besar waktu nyata, Anda benar-benar melihat apa yang terjadi !.
ling
1
Karena FSeventer sudah mati, orang juga bisa mencoba FSMonitor.
GDP2
10

Tidak ada yang menyebutkan Monitor Aktivitas, ditemukan di /Applications/Utilitiesfolder.

Klik pada Nama Proses dalam daftar, lalu tekan tombol "Periksa" pada bilah alat.

Ada tiga tab di jendela yang dihasilkan: Memory, Statistics, Open Files and Ports. The Open Files and Portstab akan menampilkan semua file yang terbuka yang digunakan oleh proses.

ghoppe
sumber
1
Ini tidak berfungsi jika file sedang diakses oleh aplikasi yang tidak dikenal
liquidblueocean
3

lsof

perintah pada Terminal.app dapat melakukannya untuk Anda? gunakan man lsofuntuk mengejar ketinggalan dengan penggunaannya. Tepuk tangan

kOoLiNuS
sumber
3

Cara yang lebih cepat adalah:

$ lsof [path_to_file]

Solusi ini tidak memerlukan kata sandi root dan memberikan Anda hasil berikut yang jelas:

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
bontoJR
sumber
1

Juga tersedia iosnoopdan iotoptergantung pada kebutuhan spesifik Anda. Perintah terminal ini dapat disalurkan melalui grepuntuk melihat peristiwa sistem file dari proses tertentu atau terhadap file tertentu.

beporter
sumber
0

Ada antarmuka grafis untuk lsofmengetik informasi. Ini donationware dari HAMSoft dan ini disebut What's Keeping Me . Dirancang untuk menjawab bahwa "Mengapa saya tidak bisa menghapus ini dari sampah saya?" pertanyaan yang sering muncul di OS X, itu juga merupakan cara praktis untuk menonton I / O terbuka pada proses yang sedang berjalan jika Anda hanya ingin tahu tentang apa yang terjadi. Ini memungkinkan Anda mencari dan memfilter sederhana.

Ian C.
sumber