Realmente matando um processo no Windows


375

Ocasionalmente, um programa em uma máquina Windows fica louco e trava. Então, eu chamo o gerenciador de tarefas e clico no botão "Finalizar processo". No entanto, isso nem sempre funciona; se eu tentar várias vezes, geralmente acabará morrendo, mas eu realmente gostaria de poder matá-lo imediatamente. No Linux, eu poderia apenas kill -9garantir que um processo morresse.

Isso também pode ser usado para escrever scripts em lote e escrever scripts em lote para programação.

Existe algum programa ou comando que vem com o Windows que sempre mata um processo? Um aplicativo gratuito de terceiros seria bom, embora eu prefira poder fazer isso em máquinas nas quais me sento pela primeira vez.


19
Processos dispersos são um problema bastante comum na programação que eu tenho que discordar; essa não é uma pergunta fora de tópico.
Dan Molding

19
Lido com o gerenciamento de processos todos os dias como desenvolvedor. Isso é totalmente um tópico para mim!
John Fitzpatrick

14
Aconselho vivamente a exclusão desta pergunta. +195 e é um hit do Google muito cedo para a questão envolvida.
Joshua

2
"a menos que eles envolvam diretamente as ferramentas usadas principalmente para a programação", eu me deparei com esse problema no Visual Studio mantendo um processo em execução que me impossibilitava de matá-lo. Fechar o Visual Studio ajudou a eliminar o processo problemático.
Joakim

Respostas:


318

"Finalizar processo" nas chamadas da guia Processos, TerminateProcessque é a melhor maneira que o Windows sabe para matar um processo.

Se ele não desaparecer, ele está bloqueado, aguardando algum recurso do kernel (provavelmente um driver de buggy) e não há nada (exceto uma reinicialização) que você possa fazer para fazer o processo ir embora.

Dê uma olhada nesta entrada do blog da wayback quando: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Sistemas baseados em Unix, como o Linux, também têm esse problema em que os processos podem sobreviver kill -9se estiverem no chamado "sono ininterrupto" (mostrado por top e ps como state D), no qual os processos dormem tão bem que não conseguem processar os sinais recebidos. (que é o que killfaz - enviando sinais).

Normalmente, o sono ininterrupto não deve durar muito, mas como no Windows, drivers quebrados ou programas quebrados de espaço de usuário ( vforksem exec) podem acabar dormindo para Dsempre.


29
Embora eu odeie que essa seja a resposta correta, não tenho dúvidas de que é mais correta do que a tarefa abaixo ... estúpidos motoristas de buggy!
Codetaku

6
Um pouco menos irritante do que uma reinicialização é fazer logoff / logon novamente. Ainda perdem trabalho, mas talvez não tanto tempo assim.
awidgery

8
isso é causado por algum outro processo, garantindo que o processo inicial esteja sempre em execução. Você matou a sua instância antiga e uma nova foi iniciada pelo cão de guarda
pilif

8
Esta resposta não está correta. "Finalizar processo" não é a melhor maneira de matar processos, pois não pode matar processos de serviço (por exemplo). taskkill /fé o mais definitivo.
user626528

5
TaskKill / f chama apenas a TerminateProcessAPI. Faz exatamente a mesma coisa que o Gerenciador de tarefas (porém, você está certo nisso, com privilégios elevados).
pilif 24/03

233
taskkill /im myprocess.exe /f

O "/ f" é para "força". Se você conhece o PID, pode especificar isso, como em:

taskkill /pid 1234 /f

Muitas outras opções são possíveis, basta digitar taskkill /? para todos eles. A opção "/ t" mata um processo e qualquer processo filho; isso pode ser útil para você.


10
Apenas uma nota. Isso é particularmente útil se você estiver escrevendo scripts para gerenciamento de servidores. kill.exe (do kit NT Res) fará com que um programa seja encerrado, mas se você tiver um manipulador de falhas instalado (principalmente windbg), poderá causar problemas, pois o sistema operacional verá o processo morto como tendo travado e tentará depurar isto. Taskkill não resultará neste problema.
Aaron

6
@lzprgmr - taskkill e "end task" provavelmente chamam a mesma função subjacente do Windows "TerminateProcess" msdn.microsoft.com/en-us/library/windows/desktop/…
JosephStyons

60
Isso não é mais eficaz do que o "processo final" do gerenciador de tarefas.
Eddie

2
Eu tenho tentado matar com força o SugarSync.exe sem ter que reiniciá-lo (desde que reiniciar o SugarSync duas vezes antes que ele realmente comece a funcionar novamente), mas o taskkill / T / F / IM SugarSync.exe não funciona - embora afirma "SUCESSO"
Jon Coombs

2
OBRIGADO! taskkill /pid 1234 /ffunciona quando a tarefa final se recusa a trabalhar! UAU!
Hendy Irawan

37

Process Hacker tem várias maneiras de matar um processo.

(Clique com o botão direito do mouse no processo e vá para Diversos-> Terminador.)


5
Não é possível encontrar muito em termos de confirmação, pois a busca por isso gera apenas milhões de DOWNLOAD GRATUITO !!! links. Mas faz o que diz que faz, riscos de vírus e tudo.
bwerks

2
@Nuzzolilo: Claro! Clique com o botão direito do mouse no processo, vá para Diversos-> Terminador.
user541686

6
Não funciona em todos os processos, eu tive um que sobreviveu a todas as opções.
Zitrax 22/03

7
Ele azulou meu computador. O processo foi interrompido após a reinicialização. Bom trabalho ... -.-'
Pedro Oliveira

5
Infelizmente Terminator é removido em v2.39 :(
raymai97

23

JosepStyons está certo. Abra o cmd.exe e execute

taskkill /im processname.exe /f

Se houver um erro dizendo:

ERRO: O processo "process.exe" com o PID 1234 não pôde ser finalizado. Motivo: acesso negado.

tente executar o cmd.exe como administrador.


9
Executando como administrador, o erro muda. Agora ele diz: ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task.e está se referindo ao pai PID 17880. Como não consegue encontrar o pai, não mata o filho órfão. :(
Jesse Chisholm

11
"você deve matar processo filho também, se qualquer gerou para matar com sucesso seu processo de" tentar este stackoverflow.com/questions/12528963/...
Dhruv Chandhok

No meu caso, o processo de zumbi que eu disse para matar era o único filho e não havia pai, embora o zumbi ainda pensasse que tinha um pai. No meu caso, resolvido usando o caminho do Sistema de reparo avançado das configurações do Windows 8.1, mas cancelando a limpeza de qualquer disco e apenas fazendo uma reinicialização forçada completa. O desligamento e reinicialização regulares são realmente suspensão / hibernação (para economizar tempo na inicialização). Não é trivial fazê-lo desligar completamente .
Jesse Chisholm

"Acesso negado" significa que o processo já está sendo fechado. Por exemplo, se você apenas tentou fechá-lo mais cedo. Você precisará esperar até que se feche.
Pacerier 20/07/16

resultados do skillkill sob direitos de administrador: acesso negado.
amuliar


15

Um truque que funciona bem é anexar um depurador e sair do depurador.

No XP ou Windows 2003, você pode fazer isso usando o ntsd que é enviado imediatamente:

ntsd -pn myapp.exe

O ntsd abrirá uma nova janela. Basta digitar 'q' na janela para sair do depurador e executar o processo.

Eu sei que isso funciona mesmo quando o gerenciador de tarefas não parece capaz de matar um processo.

Infelizmente, o ntsd foi removido do Vista e você precisa instalar as ferramentas de depuração (gratuitas) do Windows para obter um depurador adequado.


11
Muito obrigado por isso. Adicione "-c q" (sem aspas) ao encerramento automático, o que o torna ideal para matar o processo.
Joanis

2
Quando o Visual Studio e um aplicativo sendo depurado travam, conecte e elimine a instância antiga do VS. O assassino pode ser uma nova instância do VS, que pode abrir o projeto antigo e permitir que você continue trabalhando.
Bruno Martinez

Não consigo descobrir como fazer o download de algo desse link winsdk_web.exeque não seja o que não faz nada.
endolith

Agora você pode obtê-lo no SDK do Windows 10 executando o instalador e desmarcando tudo, exceto "Ferramentas de depuração para Windows" ( docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… )
Coburn

6

configure um comando AT para executar o gerenciador de tarefas ou o explorador de processos como SYSTEM.

AT 12:34 /interactive "C:/procexp.exe"

Se o Process Explorer estivesse em sua unidade C raiz, isso o abriria como SYSTEM e você poderia matar qualquer processo sem obter nenhum erro de acesso negado. Defina isso por um minuto no futuro, e ele aparecerá para você.


4
Recebo o seguinte aviso ao tentar isso, portanto parece não funcionar mais: "Aviso: devido a aprimoramentos de segurança, esta tarefa será executada no tempo esperado, mas não de maneira interativa. Use o utilitário schtasks.exe se for necessária uma tarefa interativa ('schtasks /?' para detalhes)."
precisa saber é o seguinte

0

Quando o acesso ntsd for negado, tente:

O ZeroWave foi projetado para ser uma ferramenta simples que fornecerá a terminação em vários níveis de qualquer tipo de processo.

O ZeroWave também é um programa fácil de usar devido à sua instalação simples e sua interface gráfica muito amigável.

O ZeroWave possui três modos de finalização e, com o modo "INSANE", pode finalizar qualquer tipo de processo que possa ser executado no Windows.

Parece que o ZeroWave não pode matar o avp.exe


0

Para sua informação, às vezes você pode usar o SYSTEM ou o Trustedinstaller para matar tarefas;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.