OS Xアプリケーションのファイルアクセスを監視する方法


62

FileMonのOS Xの特派員を探しています。これは後にProcessMonに含まれました。

ところで、プロセスごとにフィルタリングできることが重要です。


Mac OS XのUnixの遺産はNTアーキテクチャとは異なるため、3つのオプションを追加します-ツールは完全には重なりません。あなたは、現在起こって(または特定のファイルの変更後にアクションをトリガー)されているもので覗き見するためのツールをプログラムするか、単にするAPIを探している
bmike

回答:


63

Apple Xcode開発スイートの一部であるInstrumentsは、すべてのファイルアクセスと書き込みを監視できます。/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-> Instruments。
ミクソロジー14

アクセスされているファイルがあるため、アプリケーションの起きていない場合、これは動作しません
liquidblueocean

実際、OS Xでは機能しません。「I / OアクティビティはmacOSプラットフォームをサポートしていません」。また読み:stackoverflow.com/questions/35621938/...
JHG

これについて詳しく教えてください。どの機器-アクティビティモニター?私はここですべてのプロセスのための長い出力ではなく、一つのプロセスのためのディスクI / Oにそれをフィルタリングする方法がわから見ている
エリオットを

44

コマンドがありopensnoopます。引数なしで実行すると、出力で圧倒される可能性がありますが、引数付きで実行して、-n name出力をのプロセスに制限することができますname


1
同様にsudo opensnoop | grep .classpath、たとえばクラスパスファイルにアクセスできます。
ダヴィッドナティンガ

1
opensnoopとInstrumentsは両方とも同じDTraceエンジンのフロントエンドであることに注意してください。他のフロントエンド:dtrace.org/blogs/brendan/2011/10/10/...
三月

13

Launchdは、常に実行されているため、ファイルを監視するためのメインシステムレベルツールです(フォルダーは特別なファイルです)。Hazelは、ローンチされたWatchPathsにきれいなGUIを配置するのに役立つプログラムの1つです。ここには、launchdに関する多くのヒント、数百のチュートリアル、優れたウィキペディアの記事、Apple devのドキュメントがあります。

fseventsdはいくつかの変更をログに記録します。したがって、launchdがお好みでない場合は、FSeventerを使用するか、これらのファイルにアクセスすることができます。

fs_usagelsofは、実行中のIOサブシステムを利用するプロセス対応のコマンドラインツールです。fs_usageバッファーは過負荷になる可能性があるため、何かをより確実に保証し、「クイックピーク」を少なくしたい場合は、他のコマンドのように全体の正しい結果に対する信頼性が低くなります。


FSEventerを何度も使用して、アプリケーションがアクセスしているものを見つけました。これは、ラボ展開用のシステムイメージング用のライセンスファイルを探す場合に最適です。
デジタルチャイルド

fseventerはリアルタイムで全体像を把握するのに優れており、実際に何が起こっているのかがわかります!

1
FSeventerは死んでいるので、FSMonitorを試すこともできます。
GDP2

10

/Applications/Utilitiesフォルダーにあるアクティビティモニターについては誰も言及していません。

リスト内のプロセス名をクリックし、ツールバーの「検査」ボタンをクリックします。

結果ウィンドウ内の3つのタブがあります:MemoryStatisticsOpen Files and PortsOpen 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情報を入力するためのグラフィカルインターフェイスがあります。これはHAMSoftの寄付ウェアで、What's Keeping Meと呼ばれています。「これをゴミ箱から削除できないのはなぜですか」と答えるように設計されています。OS Xで頻繁に出てくる質問ですが、何が起こっているのか知りたいだけなら、実行中のプロセスのオープンI / Oハンドルを監視するのに便利な方法です。これにより、簡単な検索とフィルタリングが可能になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.