我最喜欢的Linux工具之一是lsof-真正的瑞士军刀!
今天,我发现自己想知道WinXP系统上的哪些程序打开了特定文件。有与lsof等效的工具吗?此外,有问题的文件是通过网络共享进行的,因此我不确定是否会使问题复杂化。
Answers:
使用Sysinternals Suite中的Process Explorer,Find Handle或DLL函数将让您搜索打开该文件的过程。
等效的lsof -p pid
是sysinternals句柄和listdlls的组合输出,即
handle -p pid
listdlls -p pid
您可以使用sysinternals找出pid pslist
。
等效的lsof可以从Sysinternals的handle和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是打开此文件的文件。
在OpenedFilesView的“选项”菜单下,有一个名为“显示网络文件”的菜单项。也许启用了该功能,上述实用程序就会有用。