Matar un proceso es una tarea bien conocida en el mundo de la informática, por diferentes motivos, casi todos los profesionales o apasionados de la tecnología han tenido que eliminar un proceso.
Existen múltiples herramientas que permiten suprimir la actividad de uno o varios procesos, en Windows el propio Administrador de Tareas, Process Explorer y otras tools de la suite de Sysinternals permiten realizar esta tarea desde el entorno gráfico, pero en algunas ocasiones es necesario eliminar procesos desde la consola o línea de comandos y una de las utilidades mas conocidas es PsKill de PsTools, un software de la suite de SysInternals para trabajar desde una shell.
Quizás no sea la mejor opción para matar procesos, y si te digo, que hay un killer mejor para esa tarea y ademas esta integrado dentro del sistema operativo Windows, el Assassin de los Procesos es TaskKill.
PsKill es una utilidad fantástica, pero esta escrita hace mucho tiempo y en las últimas versiones de Windows existen procesos de sistema que están protegidos, las limitaciones por el control de cuentas de usuario, ademas de las limitaciones asociadas a la ejecución en un dispositivo remoto, aunque hay trucos, como utilizar PsExec con la opción -s para ejecutar como System, esta utilidad esta muy limitada. Las opciones disponibles son:
PS C:\pstools> ./PsKill -?
Usage: pskill [-t] [\\computer [-u username [-p password]]] <process ID | name>
-t Kill the process and its descendants.
-u Specifies optional user name for login to
remote computer.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
-nobanner Do not display the startup banner and copyright message.
En el otro lado del ring tenemos un programa que esta integrado con el propio sistema operativo, disponible desde cmd o Windows PowerShell y con muchas mas opciones, el Assassin de Procesos por derecho: TaskKill. Y sus opciones son:
PS C:\> TaskKill /?
TASKKILL [/S sistema] [/U usuario [/P [contraseña]]]]
{ [/FI filtro] [/PID IdProceso | /IM NombreImagen] } [/T] [/F]
Descripción:
Esta herramienta se usa para terminar tareas mediante el Id.
de proceso (PID) o 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
el comando debe ejecutarse.
/P [contraseña] Especifica la contraseña para el contexto de
usuario dado. Pide entrada si se omite.
/FI filter Aplica un filtro para seleccionar un conjunto de
tareas. Permite el uso de "*". ej. imagename eq
acme*
/PID processid Especifica el PID del proceso que debe terminarse.
Use TaskList para obtener el PID.
/IM nombre de imagen Especifica el nombre de imagen del proceso que
se va a terminar. Puede usarse el comodín '*'
para especificar todas las tareas o nombres de
imagen.
/T Termina el proceso especificado y todos los
procesos secundarios iniciados por él.
/F Especifica terminar forzosamente el proceso.
/? Muestra este mensaje de ayuda.
Filtro(s):
Nombre filtro Operadores válidos Valores válidos
------------ ------------------ -------------------------
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
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
----
1) El comodín '*' para el modificador /IM se acepta solo cuando se aplica
un filtro.
2) Los procesos remotos se terminarán siempre forzosamente (/F).
3) Los filtros "WINDOWTITLE" y "STATUS" no se considerarán cuando se
especifique un equipo remoto.
Ejemplos:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S sistema /U dominio\usuario /FI "USERNAME ne NT*" /IM *
La diferencia de opciones disponibles es evidente, sobre todo destaca la cantidad de filtros disponibles para TaskKill, lo que permite que la utilidad sea mucho mas versátil a la hora de eliminar uno o varios procesos.
Seguridad a lo Jabalí para Todos!!