誰がどのファイルを開いているかを調べる方法を2つ紹介します。
openfiles
Windows XPには openfilesというツールがあって誰がどのファイルを開いているか列挙することができます。
まず cmd.exe で
openfiles /local on
として、ファイルのトレースができるようにします。(再起動が必要です)。
その後
openfiles
と打ち込むと
ローカルで開いているファイル: --------------------- ID プロセス名 開いているファイル (パス\実行可能ファイル) ===== ==================== ================================================== C:\..6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9 64 wscntfy.exe C:\..6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9 12 explorer.exe C:\Documents and Settings\higepon 60 explorer.exe C:\..6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9
などと開いているファイルの列挙ができます。
ちなみに気が済んだら以下のようにoffにしておきましょう。
ファイルのトレースは少なからず負荷になり、パフォーマンスが低下するらしいです。
openfiles /local off
Filemon
openfilesはCUIでなんとなくそっけない感じなのですがFilemonはGUIで状況を確認できます。
- http://www.sysinternals.com/Utilities/Filemon.htmlにアクセス。
- 一番下までスクロールして、Download Filemon (x86 - 200 KB) - you plan on using Filemon on 32-bit versions of NT/2K/XP/Server 2003でダウンロードします。
- 解凍して実行します。
開いているファイルが列挙されます。こういう状態を見るとOSの中の人は大変だろうなぁとおもいますね。
プロセス毎にリアルタイムでディスクI/Oの量が分かるツールがあるといいなぁ。
ハードディスクがガリガリいっているときに原因をつかみたいので。
追記 ProcessExplorer
id:mjtさんからの紹介。
http://www.sysinternals.com/Utilities/ProcessExplorer.html
タスクマネージャがさらに高機能になった感じ。
View - Select Columns - Process PerformanceタブでI/Oのデータを表示するようにしましょう。
ついでに
Options - Replace Task Managerを選ぶとタスクマネージャの代わりのこれが起動するようになります。
プロセスがツリー上に見えて良い感じですね。
不正なプロセスがあったら一発で分かりそう。