SysinternalsのProcessMonitorは、プロセスやファイルで何が起こっているのかを把握したい場合に最適な診断ツールです。このツールは、「linkUnderstandingProcessMonitor」というタイトルのヒントで紹介しました。このヒントでは、診断でその機能のいくつかを実際に使用する方法を紹介します。

この最初のシナリオでは、プロセスが実行されているが、何も実行していないように見えると想像してください。ハングしているのか、それとも現時点では検出できないことを実際に行っているのかを知りたいと思います。

すべての診断と同様に、いくつかのアプローチをとることができますが、このヒントはProcess Monitorに焦点を当てているため、その機能を使用して何が起こっているかを確認します。

プロセスモニターを起動し、[プロセス名]列でプロセスのスクロールを確認できるかどうかを確認します。表示されない場合は、双眼鏡アイコン(「検索」)をクリックしてプロセス名を入力して検索してみてください(拡張子を含めてください。たとえば、「MyProgram.exe」と入力してください)。見つかった場合、Process Monitorはスクロールを停止し、プロセス名を最初に見つけた行を強調表示します。 .exe名がわからない場合は、[ウィンドウからプロセスを含める]アイコン(左から8番目)を使用できます。これを使用するには、アイコンをクリックして、プロセスが実行されているウィンドウにドラッグします。アイコンをウィンドウにドラッグしたら、マウスを放すと、プロセスモニターはそのウィンドウのプロセスが見つかった行に移動します。この時点で、その特定のプロセスに関するすべてを除外できるため、他のすべての処理に気を取られることなく、アクティビティを監視できます。

フィルタリングは、ProcessMonitorの強力でありながらシンプルな概念です。フィルタは、エントリを含めるか、エントリを除外するように設定できます。 「インクルード」フィルターがオンになっている場合は、フィルターに一致するエントリーのみが表示されることを理解することが重要です。一方、「除外」フィルターをオンにしている場合は、フィルター内にあるものを除くすべてが表示されます。 「含める」フィルターは常に「除外する」フィルターよりも優先されます。

フィルタアイコン(逆ピラミッド)をクリックします。 Process Monitorは、検出したプロセスの「インクルード」フィルターを自動的に作成しているため、実際には何もする必要はありません。フィルターウィンドウで[キャンセル]をクリックし、メイン画面でプロセスのアクティビティを監視します。 (図1を参照)

image

図1. [プロセスモニターフィルター]ウィンドウ。

2番目のシナリオでは、ハードドライブに、断続的に奇妙な動作を示すファイルがあるとします。たとえば、「別のユーザーによってファイルがロックされました」というエラーが原因で、変更日が変更されたり、プロセスがクラッシュしたりすることがあります。プロセスモニターを使用してファイルを監視し、どのプロセスがファイルにアクセスしているかを確認できます。

プロセスモニターを起動します。前回ProcessMonitorを実行したときにフィルターを設定したため、この設定が記憶され、[フィルター]ウィンドウが自動的に表示されます。このセッションを白紙の状態で開始したいので、[リセット]ボタンをクリックして、フィルタリング基準をデフォルト設定に戻します。次に、[OK]をクリックします。

監視するファイルの名前が「C:\ Temp \ Indexes.dat」であると想定します。この場合も、メイン画面でファイルの情報が[パス]列に表示されるのを確認できますが、[フィルター]アイコンをクリックして「含める」フィルターを作成し、そのファイルに関連するアクティビティのみが表示されるようにする方が簡単です。

フィルタアイコンをクリックし、左上のドロップダウンリストで[パス]を選択します。次に、「is」という単語を含むドロップダウンリストのすぐ右側のボックスに「C:\ Temp \ Indexes.dat」(引用符なし)と入力します。 (図2を参照)

image

図2.特定のファイル名でのフィルタリング。

次に、[追加]ボタンと[OK]ボタンをクリックして、メイン画面に戻ります。

これで、ファイルがいつアクセスされ、どのプロセスがそれを実行しているかを正確に確認できます。

最後のシナリオでは、異常な量のハードディスクアクティビティが発生しているように見えることに気付いたとしましょう。 Process Monitorを使用して、このアクティビティのスナップショットを作成し、後で分析することができます。

プロセスモニターを起動し、シナリオ2で行ったように、フィルタリングをデフォルトの状態にリセットします。次に、メイン画面が表示されたら、[キャプチャ]アイコン(左から3番目)をクリックします。これにより、現在のアクティビティのスナップショットが取得され、スクロールが停止します。

このスナップショットのディスクアクティビティを確認するには、[ツール]、[スナップショット]の順にクリックします。 [ファイルの概要]メニュー項目。 [ファイルの概要]ダイアログボックスが表示され、スナップショットによってキャプチャされたすべてのファイルアクティビティが含まれます。 (図3を参照)

image

図3.パス別のファイルの概要。

この要約は現在、[合計イベント]列で並べ替えられていますが、列見出しをクリックすると、その特定のフィールドでデータが並べ替えられます。 「フォルダ別」タブをクリックして、名前でグループ化されたファイルを表示するのも興味深いことです。 (図4を参照)

image

図4.フォルダーごとのファイルの概要。

これで、左側のプラス記号をクリックして、すべてのファイルがアクセスされていることを確認することで、ドリルダウンできます。

このヒントでは、問題の診断にProcessMonitorを使用できる3つのシナリオを紹介しました。途中で、対処されていないアイコンやメニュー項目がもっとたくさんあることに気づいたかもしれません。冒頭で述べたように、Process Monitorで何ができるかを知る最良の方法は、自分で実験することです。

このヒント(13120)は、Windows 7、8、および10に適用されます。