Matar procesos en Windows (taskkill)

Introducción

La forma más común para matar procesos en Windows seguramente sea utilizando el administrador de tareas, en la pestaña de «Procesos», haciendo click derecho en el proceso que queremos cerrar por la fuerza:

Administrador de tareas

Si utilizamos Windows XP Professional (o Windows Vista), podemos utilizar el comando taskkill para terminar (de forma forzada si así lo necesitamos) un proceso por su id, su nombre o por filtros menos selectivos. Inclusive se puede utilizar para matar procesos de sistemas remotos. Entre las opciones para seleccionar el proceso a terminar, tenemos las más simples como ser por PID (process id) o nombre de imagen. También tenemos la posibilidad de utilizar un sistema de filtros, para los cuales el comando nos ofrece algunos nombres de variables y una lista de operadores para poder hacer comparaciones (por ejemplo, para terminar todos los procesos de un usuario, o para terminar los procesos que exceden cierto límite de uso de memoria RAM).

Ejemplos de uso

Veamos algunos ejemplos de uso:

  • TASKKILL /PID 1230 /PID 1241 /PID 1253: termina los procesos con PID 1230, 1241 y 1253.
  • TASKKILL /F /IM notepad.exe /IM mspaint.exe: termina de manera forzada los procesos con nombre de imagen «notepad.exe» o «mspaint.exe».
  • TASKKILL /S otra-pc /F /IM notepad.exe: termina los bloc de notas en la PC de la red llamada «otra-pc».
  • TASKKILL /F /FI «PID ge 1000» /FI «WINDOWTITLE ne untitle*»: termina de manera forzada los procesos que tengan un PID mayor o igual a 1000, y además el título de la ventana no empiece con «untitle». Notar que se puede utilizar un caracter de comodín (*) en los filtros, lo que facilita el uso de filtros menos selectivos. También se pueden utilizar varios filtros, para que el comando haga la intersección de los filtros.
  • TASKKILL /F /FI «USERNAME eq NT AUTHORITYSYSTEM» /IM notepad.exe: termina de manera forzada los procesos con nombre de imagen «notepad.exe» que fueron iniciados por el usuario «NT AUTHORITYSYSTEM».
  • TASKKILL /S otra-pc /U dominiousuario /FI «USERNAME ne NT*» /IM *: Utilizando el usuario «dominiousuario», termina de forma remota todos los procesos de los usuarios que su nombre no empiece con «NT» en la PC de la red llamada «otra-pc». Si es necesario, pedirá que se ingrese la contraseña del usuario.
  • TASKKILL /S otra-pc /U nombreusuario /P contraseña»: Si no se ingresan filtros al invocar taskkill para un sistema remoto, el comando apaga la computadora remota (siempre y cuando el usuario tenga permisos para hacerlo)

La salida del comando es un listado de los procesos terminados en caso de que alguno cumpliera con el filtro:

<br />
C:\&gt; TASKKILL /F /FI &quot;PID ge 3599&quot; /FI &quot;IMAGENAME eq fdm.exe*&quot;<br />
Correcto: se terminó el proceso con PID 3600.<br />

O un aviso si ningún proceso cumplió el filtro especificado:

<br />
C:\&gt; TASKKILL /F /FI &quot;PID ge 3599&quot; /FI &quot;IMAGENAME eq FOXIT*&quot;<br />
INFORMACIÓN: no hay tareas ejecutándose con los criterios especificados.<br />

¿Y para Windows NT o 2000?

Para sistemas basados en Windows NT y 2000 vale la pena ver PsKill (link), una utilidad similar a taskkill.

Acceso directo para «limpiar» procesos que no responden

Una idea muy interesante es crear un acceso directo para matar de forma forzada todos los procesos que hayan dejado de responder. Esto es bastante simple, lo hacemos poniendo como comando del acceso directo lo siguiente:

<br />
taskkill.exe /f /fi &quot;status eq not responding&quot;<br />

Sintaxis completa

La ayuda completa del comando taskkill es la siguiente:

<br />
C:\&gt; taskkill /?</p>
<p>TASKKILL [/S sistema] [/U usuario [/P contraseña]]<br />
         { [/FI filtro] [/PID IdProceso | /IM NombreImagen] } [/F] [/T]</p>
<p>Descripción:<br />
    Esta herramienta de la línea de comandos puede usarse en uno o más procesos.<br />
    Los procesos pueden terminarse a través del Id. o del nombre de imagen.</p>
<p>Lista de parámetros:<br />
    /S    sistema               Especifica el sistema remoto al que conectarse.<br />
    /U    [dominio]usuario    Especifica el contexto de usuario en el que se que el comando debe ejecutarse.<br />
    /P     contraseña           Especifica la contraseña para el contexto de usuario dado. Pide la entrada si se omite.<br />
    /F                          Especifica la terminación forzada de proceso(s).<br />
    /FI     filtro              Especifica un conjunto de tarea que coinciden con el criterio especificado en el filtro.<br />
    /PID    Id. de proceso      Especifica el ID. de proceso que se debe terminar.<br />
    /IM     nombre de imagen    Especifica el nombre de imagen del proceso que debe terminar. El carácter comodín &quot;*&quot; puede usarse para especificar todos los nombres de imagen.<br />
    /T                          Terminar árbol: termina el proceso especificado y todos los procesos secundarios iniciados por él.<br />
    /?                          Muestra el uso de la ayuda.</p>
<p>Filtro(s):<br />
    Nombre filtro   Operadores válidos         Valores válidos<br />
    -------------   ------------------         ---------------<br />
    STATUS          eq, ne                     RUNNING | NOT RESPONDING<br />
    IMAGENAME       eq, ne                     Nombre de imagen.<br />
    PID             eq, ne, gt, lt, ge, le     Valor de PID.<br />
    SESSION         eq, ne, gt, lt, ge, le     Número de sesión<br />
    CPUTIME         eq, ne, gt, lt, ge, le     Tiempo válido en el formato<br />
                                               hh:mm:ss.<br />
                                               hh - horas,<br />
                                               mm - minutos, ss - segundos<br />
    MEMUSAGE        eq, ne, gt, lt, ge, le     Uso de memoria en KB.<br />
    USERNAME        eq, ne                     Nombre de usuario en formato<br />
                                               [dominio]usuario.<br />
    MODULES         eq, ne                     Nombre de DLL<br />
    SERVICES        eq, ne                     Nombre de servicio.<br />
    WINDOWTITLE     eq, ne                     Título de ventana.</p>
<p>Nota: el carácter comodín &quot;*&quot; del modificador /IM se acepta solamente<br />
      con filtros.</p>
<p>Nota: los procesos remotos siempre se terminarán de manera forzada<br />
      sin tener en cuenta si la opción /F se ha especificado o no.<br />

Etiquetado . Bookmark the permalink.

17 respuestas a Matar procesos en Windows (taskkill)

  1. Jorge says:

    Por ejemplo lo que deseo es matar el explorer y todos los procesos que cuelgan de él exceptuando la aplicación cmd que me la mata tambien.
    El comando para cerrar el explorer con las aplicaciones vinculadas sería
    taskkill /f /t explorer.exe
    pero no se como hacer para que me las cierre todas exceptuando esa

    • jarrarte says:

      Mmm, no me doy cuenta cómo podría ser… probé:

      taskkill /F /T /PID [PID_del_explore.exe] /fi «PID ne [PID_del_cmd.exe]»

      pero mató todo el arbol de procesos, sin tomar en cuenta el filtro que agregué.

      Si encuentras una solución, ¡será bienvenida! 😀

      Saludos,
      José

  2. Coasp says:

    A mi me pone: Error de inicio de sesion :S que puede ser?

    • Si estás matando procesos en sistemas remotos y no en la PC que ejecutas el comando, quizá te falte ingresar los parámetros de usuario y password del sistema remoto.
      Si esto es así, revisa los parámetros de usuario (/U [dominio]usuario) y de contraseña (/P [contraseña])

      Saludos y suerte!

  3. jbgdjggcj says:

    ami sim gusto muxo

  4. ricardo says:

    taskkill.exe /f /fi «status eq not responding»
    no aplica, para ningun programa trabado, puesto que no valida las ultimas palabras del titulo del programa, solo valida desde el inicio del programa, y como cada programa empieza y se llama diferente, simplemente no valida la ultima frase «not responding»

    • jarrarte says:

      Ricardo, ¿cómo estás?

      Pero el status no es parte del título del programa… ¿estás seguro que el programa está efectivamente en ese estado? (lo puede ver en el Administrador de tareas de Windows, en la parte de «Aplicaciones»

      Saludos y suerte!

  5. Omar says:

    que puedo hacer cuando ni el comando taskkill pude cerrar un proceso

  6. leandro says:

    Quiero matar un app del sistema que sea critico e que se disponga de una autoridad maxima en el sistema

  7. leandro says:

    Para quien tiene dudas consegui matar la rais toda
    baxa proses hacker ve las raises y ensera la rais completa com la CMD taskkill

  8. Favio815 says:

    en ni arbol de proceso me aparece un GY250 y no tengo nada ejecutando, que puede ser?

  9. Jose Angel Cortés Contreras says:

    Hola:
    Lo que quisiera conseguir con un archivo «.BAT» es:
    Al aplicar «TASKLIST» y despues de ver los «PID» en pantalla CMD, conseguir que seleccione uno de ellos para aplicarle un
    «TASKKILL». ¿Cómo lo hago?

    • Jose Angel Cortés Contreras says:

      Me he explicado mal en la segunda parte de mi consulta.

      Despues de aplicar «tasklist», quiero que me pida que introduzca uno de los PID para aplicarle «taskkill».

  10. Jarzhino says:

    HOLA, como puedo matar un proceso que requiere que se escriba la palabra «salir» en el cmd para finalizar .
    Gracias

  11. Una alternativa a el comando taskkill.exe /f /fi «status eq not responding» seria hacer un archivo .bat con el comando para matar el proceso que queramos y luego guardarlo y ejecutarlo cuando el programa no responda.

  12. Hebry says:

    Cómo desactivo y activo un programa Sen serarlo como el super copy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *