Realmente matando un proceso en Windows

375

Ocasionalmente, un programa en una máquina con Windows se vuelve loco y simplemente se cuelga. Entonces llamaré al administrador de tareas y presionaré el botón "Finalizar proceso". Sin embargo, esto no siempre funciona; si lo intento suficientes veces, generalmente morirá eventualmente, pero realmente me gustaría poder matarlo de inmediato. En Linux podría simplementekill -9 garantizar que un proceso morirá.

Esto también podría usarse para escribir scripts por lotes y escribir scripts por lotes es programación.

¿Hay algún programa o comando que venga con Windows que siempre matará un proceso? Una aplicación de terceros gratuita estaría bien, aunque preferiría poder hacer esto en máquinas en las que me siento por primera vez.

Eli Courtwright
fuente
19
Los procesos extraviados son un problema bastante común en la programación que tengo que estar en desacuerdo; Esta no es una pregunta fuera de tema.
Dan Moulding
19
Me encargo de la gestión de procesos todos los días como desarrollador. ¡Esto es totalmente un tema para mí!
John Fitzpatrick
14
Recomiendo encarecidamente no eliminar esta pregunta. +195 y es un éxito de Google muy temprano para la pregunta involucrada
Joshua
2
"a menos que impliquen directamente las herramientas utilizadas principalmente para la programación" Me encontré con este problema con respecto a que Visual Studio mantuviera un proceso en ejecución que me impedía matarlo. Cerrar Visual Studio ayudó a eliminar el proceso problemático.
Joakim
Puede usar el cmdlet Stop-Process PowerShell .
Rosberg Linhares

Respuestas:

318

"Finalizar proceso" en las llamadas a la pestaña Procesos, TerminateProcessque es la mejor forma en que Windows sabe matar un proceso.

Si no desaparece, actualmente está bloqueado esperando algún recurso del kernel (probablemente un controlador con errores) y no hay nada (salvo un reinicio) que pueda hacer para que el proceso desaparezca.

Eche un vistazo a esta entrada de blog de wayback cuando: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Los sistemas basados ​​en Unix como Linux también tienen ese problema en el que los procesos podrían sobrevivir kill -9si se encuentran en lo que se conoce como "suspensión ininterrumpida" (que se muestra en la parte superior y ps como estado D), en cuyo punto los procesos se suspenden tan bien que no pueden procesar las señales entrantes. (Que es quekill hace: enviar señales).

Normalmente, la suspensión ininterrumpida no debería durar mucho, pero como en Windows, los controladores rotos o los programas de espacio de usuario rotos ( vforksin exec) pueden terminar durmiendo para Dsiempre.

Pilif
fuente
29
Si bien odio que esta sea la respuesta correcta, no tengo dudas de que es más correcta que la tarea que se detalla a continuación ... ¡estúpidos conductores con errores!
codetaku
66
Un poco menos molesto que un reinicio es desconectarse / conectarse nuevamente. Todavía pierdo trabajo, pero quizás no tanto tiempo.
asombroso
8
eso es causado por algún otro proceso, asegurándose de que el proceso inicial siempre se esté ejecutando. Has matado tu instancia anterior y el perro guardián ha iniciado una nueva
pilif
8
Esta respuesta no es correcta en absoluto. "Finalizar proceso" no es la mejor forma de eliminar procesos, ya que no puede eliminar procesos de servicio (por ejemplo). taskkill /fEs lo más supremo.
user626528
55
TaskKill / f solo llama a la TerminateProcessAPI. Hace exactamente lo mismo que el Administrador de tareas (sin embargo, tiene razón en eso, con privilegios elevados).
Pilif
233
taskkill /im myprocess.exe /f

La "/ f" es para "forzar". Si conoce el PID, puede especificar eso, como en:

taskkill /pid 1234 /f

Hay muchas otras opciones posibles, solo escriba taskkill /? para todos ellos. La opción "/ t" mata un proceso y cualquier proceso hijo; eso puede ser útil para usted.

JosephStyons
fuente
10
Solo una nota. Esto es particularmente útil si está escribiendo scripts para la administración del servidor. kill.exe (del kit NT Res) hará que un programa salga, pero si tiene instalado un controlador de bloqueo (particularmente windbg), puede causar problemas ya que el sistema operativo verá que el proceso finalizado se ha bloqueado e intentará depurar eso. Taskkill no dará lugar a este problema.
Aaron
66
@lzprgmr - taskkill y "end task" probablemente llaman a la misma función de Windows subyacente "TerminateProcess" msdn.microsoft.com/en-us/library/windows/desktop/…
JosephStyons
6060
Esto no es más efectivo que "finalizar el proceso" desde el administrador de tareas.
Eddie
2
He estado tratando de matar a la fuerza SugarSync.exe sin tener que reiniciar (desde que reiniciar SugarSync dos veces antes de que realmente comience lo hace funcionar de nuevo), pero taskkill / T / F / IM SugarSync.exe no funciona, aunque dice "ÉXITO"
Jon Coombs
2
¡GRACIAS! taskkill /pid 1234 /ffunciona cuando End Task se niega a funcionar! ¡GUAUU!
Hendy Irawan
37

Process Hacker tiene numerosas formas de matar un proceso.

(Haga clic con el botón derecho en el proceso, luego vaya a Varios-> Terminador).

usuario541686
fuente
55
No puedo encontrar mucho en el camino de la corroboración, ya que la búsqueda de esto solo genera millones de DESCARGAS GRATUITAS. Enlaces. Pero hace lo que dice que hace, riesgos de virus y todo.
bwerks
2
@ Nuzzolilo: ¡Claro! Haga clic derecho en el proceso, vaya a Varios-> Terminador.
user541686
66
No funciona en todos los procesos, tuve uno que sobrevivió a todas las opciones.
Zitrax
77
Cubrió mi computadora con blues. El proceso desapareció después del reinicio. Buen trabajo ... -.- '
Pedro Oliveira
55
Desafortunadamente, Terminator se elimina en v2.39 :(
raymai97
23

JosepStyons tiene razón. Abra cmd.exe y ejecute

taskkill /im processname.exe /f

Si hay un error que dice:

ERROR: El proceso "process.exe" con PID 1234 no se pudo finalizar. Motivo: acceso denegado.

luego intente ejecutar cmd.exe como administrador.

Dhruv Chandhok
fuente
99
Ejecutándose como administrador, el error cambia. Ahora dice: ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task.y se refiere al PID 17880 padre. Como no puede encontrar al padre, no matará al niño huérfano. :(
Jesse Chisholm
1
"debe matar el proceso secundario también si se genera alguno para matar con éxito su proceso" intente esta stackoverflow.com/questions/12528963/…
Dhruv Chandhok
En mi caso, el proceso zombie que le dije que matara era el único hijo y no había padre, aunque el zombie todavía pensaba que tenía un padre. En mi caso, lo resolví utilizando la ruta del sistema de reparación avanzada de configuración de Windows 8.1, pero cancelando de borrar cualquier disco y simplemente haciendo un reinicio forzado completo. El apagado y reinicio regular es realmente suspensión / hibernación (para ahorrar tiempo en el inicio). No es trivial lograr que se apague por completo .
Jesse Chisholm
"Acceso denegado" significa que el proceso ya está en proceso de cierre. Por ejemplo, si acaba de intentar cerrarlo antes. Tendrás que esperar hasta que se cierre.
Pacerier
resultados de taskkill bajo derechos de administrador: acceso denegado.
amuliar el
22

Obtenga el explorador de procesos de sysinternals (ahora Microsoft)

Process Explorer - Windows Sysinternals | Documentos de Microsoft

Iain Holder
fuente
15
Eso proporciona más información (y cierta capacidad limitada para buscar manejadores de bloqueo) pero no he tenido más éxito en matar tareas con él que con el Administrador de tareas básico. Ciertos procesos (como el antivirus y SugarSync.exe) simplemente se niegan a morir.
Jon Coombs
15

Un truco que funciona bien es adjuntar un depurador y luego salir del depurador.

En XP o Windows 2003 puede hacer esto usando ntsd que viene de fábrica:

ntsd -pn myapp.exe

ntsd abrirá una nueva ventana. Simplemente escriba 'q' en la ventana para salir del depurador y eliminar el proceso.

He sabido que esto funciona incluso cuando el administrador de tareas no parece capaz de matar un proceso.

Desafortunadamente, ntsd se eliminó de Vista y debe instalar las herramientas de depuración (gratuitas) para Windows para obtener un depurador adecuado.

Rob Walker
fuente
1
Muchas gracias por esto. Agregue "-c q" (sin comillas) a autoquit, lo que lo convierte en el asesino de procesos ideal.
Joanis
2
Cuando Visual Studio y una aplicación que se está depurando se bloquean, adjuntan y eliminan la instancia anterior de VS. El asesino puede ser una nueva instancia de VS, que luego puede abrir el antiguo proyecto y permitirle continuar trabajando.
Bruno Martinez
No puedo entender cómo descargar nada de ese enlace winsdk_web.exeque no sea , que no hace nada.
endolito
Ahora puede obtenerlo en el SDK de Windows 10 ejecutando el instalador y luego desmarcando todo menos "Herramientas de depuración para Windows" ( docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… )
Coburn
6

configurar un comando AT para ejecutar el administrador de tareas o el explorador de procesos como SYSTEM.

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

Si el explorador de procesos estaba en su unidad raíz C, esto lo abriría como SYSTEM y podría matar cualquier proceso sin obtener ningún error de acceso denegado. Establezca esto por un minuto en el futuro, luego aparecerá para usted.

David Ruark
fuente
44
Recibo la siguiente advertencia al intentar esto, por lo que parece que ya no funciona: "Advertencia: debido a las mejoras de seguridad, esta tarea se ejecutará en el momento esperado pero no de forma interactiva. Utilice la utilidad schtasks.exe si se requiere una tarea interactiva ('schtasks /?' para detalles)."
WhiteKnight
0

Cuando se deniegue el acceso ntsd, intente:

ZeroWave fue diseñado para ser una herramienta simple que proporcionará una terminación multinivel de cualquier tipo de proceso.

ZeroWave también es un programa fácil de usar debido a su instalación simple y su interfaz gráfica muy amigable.

ZeroWave tiene tres modos de terminación y con el modo "INSANE" puede terminar cualquier tipo de proceso que pueda ejecutarse en Windows.

Parece que ZeroWave no puede matar avp.exe

diyism
fuente
0

Para su información, a veces puede usar SYSTEM o Trustedinstaller para matar tareas;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
RmccurdyDOTcom
fuente