Inicio > Windows > Matar procesos en Windows (taskkill)

Matar procesos en Windows (taskkill)

Martes, 15 de septiembre de 2009 jarrarte Dejar un comentario Ir a comentarios

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 AUTHORITY\SYSTEM” /IM notepad.exe: termina de manera forzada los procesos con nombre de imagen “notepad.exe” que fueron iniciados por el usuario “NT AUTHORITY\SYSTEM”.
  • TASKKILL /S otra-pc /U dominio\usuario /FI “USERNAME ne NT*” /IM *: Utilizando el usuario “dominio\usuario”, 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:

C:\>TASKKILL /F /FI "PID ge 3599" /FI "IMAGENAME eq fdm.exe*"
Correcto: se terminó el proceso con PID 3600.

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

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

¿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:

taskkill.exe /f /fi "status eq not responding"

Sintaxis completa

La ayuda completa del comando taskkill es la siguiente:

C:\ >taskkill /?

TASKKILL [/S sistema] [/U usuario [/P contraseña]]
         { [/FI filtro] [/PID IdProceso | /IM NombreImagen] } [/F] [/T]

Descripción:
    Esta herramienta de la línea de comandos puede usarse en uno o más
    procesos.
    Los procesos pueden terminarse a través del Id. o del nombre de imagen.

Lista de parámetros:
    /S    sistema               Especifica el sistema remoto al que conectarse.
    /U    [dominio\]usuario    Especifica el contexto de usuario en el que se que el comando debe ejecutarse.
    /P     contraseña           Especifica la contraseña para el contexto de usuario dado. Pide la entrada si se omite.
    /F                          Especifica la terminación forzada de proceso(s).
    /FI     filtro              Especifica un conjunto de tarea que coinciden con el criterio especificado en el filtro.
    /PID    Id. de proceso      Especifica el ID. de proceso que se debe terminar.
    /IM     nombre de imagen    Especifica el nombre de imagen del proceso que debe terminar. El carácter comodín "*" puede usarse para especificar todos los nombres de imagen.
    /T                          Terminar árbol: termina el proceso especificado y todos los procesos secundarios iniciados por él.
    /?                          Muestra el uso de la ayuda.

Filtro(s):
    Nombre filtro   Operadores válidos         Valores válidos
    -------------   ------------------         ---------------
    STATUS          eq, ne                     RUNNING | NOT RESPONDING
    IMAGENAME       eq, ne                     Nombre de imagen.
    PID             eq, ne, gt, lt, ge, le     Valor de PID.
    SESSION         eq, ne, gt, lt, ge, le     Número de sesión
    CPUTIME         eq, ne, gt, lt, ge, le     Tiempo válido en el formato
                                               hh:mm:ss.
                                               hh - horas,
                                               mm - minutos, ss - segundos
    MEMUSAGE        eq, ne, gt, lt, ge, le     Uso de memoria en KB.
    USERNAME        eq, ne                     Nombre de usuario en formato
                                               [dominio\]usuario.
    MODULES         eq, ne                     Nombre de DLL
    SERVICES        eq, ne                     Nombre de servicio.
    WINDOWTITLE     eq, ne                     Título de ventana.

Nota: el carácter comodín "*" del modificador /IM se acepta solamente
      con filtros.

Nota: los procesos remotos siempre se terminarán de manera forzada
      sin tener en cuenta si la opción /F se ha especificado o no.

Posts relacionados (generados automáticamente):

  1. Seleccionar y matar un proceso java determinado
  2. UnxUtils: ejecutar comandos Linux/UNIX en Windows
  3. Hotkeys del símbolo de sistema de Windows
  4. Ejecutar aplicaciones gráficas de X11 (Linux y Unix) en Windows

Categories: Windows Tags:
  1. Jorge
    Domingo, 17 de enero de 2010 a las 22:47 | #1

    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

    • Jueves, 11 de febrero de 2010 a las 11:41 | #2

      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! :D

      Saludos,
      José

  1. Sin trackbacks aún.