Linux用の私のお気に入りのツールの1つはlsofです-本物のスイスアーミーナイフです!
今日、私はWinXPシステムのどのプログラムが特定のファイルを開いているのか疑問に思いました。lsofと同等のユーティリティはありますか?さらに、問題のファイルはネットワーク共有を介していたため、それが問題を複雑にするかどうかはわかりません。
回答:
使用プロセスExplorerがSysinternalsのスイートから、検索ハンドルやDLL関数を使用すると、開いているファイルを使用してプロセスを検索できるようになります。
に相当するのlsof -p pid
は、sysinternalsハンドルとlistdllからの出力を組み合わせたものです。
handle -p pid
listdlls -p pid
sysinternalsでpidを見つけることができますpslist
。
lsofに相当するものの1つは、Sysinternalsのハンドルとlistdllsからの出力を組み合わせることができます。
c:\SysInternals>handle
[...]
------------------------------------------------------------------------------
gvim.exe pid: 5380 FOO\alois.mahdal
10: File (RW-) C:\Windows
1C: File (RW-) D:\some\locked\path\OpenFile.txt
[...]
c:\SysInternals>listdlls
[...]
------------------------------------------------------------------------------
Listdlls.exe pid: 6840
Command line: listdlls
Base Size Version Path
0x00400000 0x29000 2.25.0000.0000 D:\opt\SysinternalsSuite\Listdlls.exe
0x76ed0000 0x180000 6.01.7601.17725 C:\Windows\SysWOW64\ntdll.dll
[...]
c:\SysInternals>listdlls
残念ながら、それらを使用するには「管理者として実行」する必要があります。
また、listdllとhandleは連続したテーブルのような形式を生成しないため、ファイル名をフィルタリングするとPIDが非表示になります。findstr /c:pid: /c:<filename>
ただし、両方のユーティリティに非常に近づく必要があります
c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm
System pid: 4 \<unable to open process>
smss.exe pid: 308 NT AUTHORITY\SYSTEM
avgrsa.exe pid: 384 NT AUTHORITY\SYSTEM
[...]
cmd.exe pid: 7140 FOO\alois.mahdal
conhost.exe pid: 1212 FOO\alois.mahdal
gvim.exe pid: 3408 FOO\alois.mahdal
188: File (RW-) D:\some\locked\path\OpenFile.txt
taskmgr.exe pid: 6016 FOO\alois.mahdal
[...]
ここで、gvim.exeがこのファイルを開いていることがわかります。
プログラム「OpenFiles」があり、Windows7の一部のようです。それはあなたが望むことをすることができるようです。リモートユーザーが(ファイル共有を介して)開いたファイルを一覧表示でき、「openfiles / Local on」を呼び出してシステムを再起動すると、ローカルで開いたファイルを表示できるようになります。後者にはパフォーマンス上のペナルティがあると言われています。
「コンピュータ」(または「マイコンピュータ」)アイコンを右クリックし、ポップアップメニューから「管理」を選択すると、コンピュータの管理コンソールが表示されます。
そこのSystemTools \ Shared Foldersの下に、「OpenFiles」があります。これはおそらくあなたが望むものに近いですが、ファイルがネットワーク共有上にある場合は、ファイルが存在するサーバー上で同じことを行う必要があります。
Process Explorerを使用して、プロセスIDを見つけます。次に、Handleを使用して、開いているファイルを確認します。
例:ハンドル-p
Microsoft自体のユーティリティを使用しているので、このアプローチが好きです。
でOpenedFilesView、オプションメニューの下に、「ショーネットワークファイル」という名前のメニュー項目があります。おそらくそれが有効になっていると、前述のユーティリティはある程度役に立ちます。