Pergunta

Uma das minhas ferramentas favoritas para Linux é lsof - um verdadeiro canivete suíço!

Hoje me perguntei quais programas em um sistema WinXP tinham um arquivo específico aberto.Existe algum utilitário equivalente ao lsof?Além disso, o arquivo em questão estava em um compartilhamento de rede, então não tenho certeza se isso complica as coisas.

Foi útil?

Solução

Usar Explorador de processos do Sysinternals Suite, a função Find Handle ou DLL permitirá que você pesquise o processo com esse arquivo aberto.

Outras dicas

O equivalente de lsof -p pid é a saída combinada do identificador sysinternals e listdlls, ou seja

handle -p pid
listdlls -p pid

você pode descobrir o pid com sysinternals pslist.

Tentar Lidar. Arquivomon & Regmon também são ótimos para tentar descobrir o que o programa duce foo está fazendo no seu sistema.

Um equivalente de lsof poderia ser a saída combinada do Sysinternals ' lidar e listdlls, ou seja:

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

Infelizmente, você precisa “executar como administrador” para poder usá-los.

Também listdlls e lidar não produz um formato semelhante a uma tabela contínua, portanto a filtragem do nome do arquivo ocultaria o PID. findstr /c:pid: /c:<filename> deve deixar você muito próximo de ambos os utilitários, no entanto

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
[...]

Aqui podemos ver que gvim.exe é quem está com este arquivo aberto.

Tentar destravador.

O site do Unlocker tem um gráfico bacana (role para baixo após seguir o link) que mostra uma comparação com outras ferramentas.Obviamente, tais comparações são geralmente tendenciosas, uma vez que são normalmente escritas pelo autor da ferramenta, mas o gráfico pelo menos lista as alternativas para que você possa experimentá-las por si mesmo.

Se o arquivo for um .dll, você poderá usar o Lista de tarefas aplicativo de linha de comando para ver quem o abriu:

TaskList /M nameof.dll

Se você clicar com o botão direito no ícone “Computador” (ou “Meu Computador”) e selecionar “Gerenciar” no menu pop-up, você será direcionado ao console de Gerenciamento do Computador.

Lá, em Ferramentas do Sistema\Pastas Compartilhadas, você encontrará "Arquivos Abertos".Provavelmente isso está próximo do que você deseja, mas se o arquivo estiver em um compartilhamento de rede, você precisará fazer a mesma coisa no servidor em que o arquivo reside.

Existe um programa "OpenFiles", parece fazer parte do windows 7.Parece que pode fazer o que você quiser.Ele pode listar arquivos abertos por usuários remotos (por meio de compartilhamento de arquivos) e, depois de ligar para "OpenFiles /Local On" e um sistema reiniciado, deve ser capaz de mostrar os arquivos abertos localmente.Diz-se que este último tem penalidades de desempenho.

Use o Process Explorer para encontrar o ID do processo.Então use Lidar para descobrir quais arquivos estão abertos.

Por exemplo, manipular -p

Gosto dessa abordagem porque você está usando utilitários da própria Microsoft.

Em OpenFilesView, no menu Opções, há um item de menu chamado "Mostrar arquivos de rede".Talvez com isso habilitado, o utilitário mencionado seja de alguma utilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top