Muchas veces nos hemos encontrado con que al reiniciar servicios éstos se quedan “colgados” en estado “deteniendo” o “iniciando”.
Una forma para detener realmente estos servicios (o aplicaciones) es usando el par de comandos: tasklist y taskkill.
Nota para mis amigos Linuxeros: cualquier parecido con ps/kill es sólo coincidencia… supongo… :p
Los pasos son bastante simples:
1. Elegir el Objetivo.
Para poder usar taskKill necesito conocer el ID de proceso que quiero “eliminar”. Este proceso puede ser una aplicación o puede ser un servicio. Si estoy usando Windows 2008/R2 me basta con ir al administrador de tareas y en la lengüeta de “Procesos” o “Servicios” y leer desde ahí el Si es una aplicación es bastante fácil, pues me basta con ir al administrador de tareas (taskmanager) y obtener desde ahí el número de Proceso, o PID (Process ID).
Pero si estoy usando Windows 2003 Server, obtener el PID de un servicio es un poco más complejo.
A. Ejecutar desde la línea de comandos: tasklist. se obtiene una respuesta como la siguiente:
para poder filtrar por el nombre del servicio podemos usar el comando findstr para que busque el nombre del servicio “spool” en en la salida:
tasklist | findstr spool
y obtenemos el número del proceso: 1312
(si, ya se que parece powershell, pero en realidad no es nada nuevo!)
2. Dispara!
Ya sabemos que queremos pasar a mejor vida el proceso 1312, así que ahora simplemente ejecutamos:
taskkill /PID 1312 /F
Notas:
- El modificador /F es para “Forzar” la finalización del proceso.
- Como siempre es posible invocar los comandos seguidos de un “/?” para conocer todas las opciones.
- En el caso de eliminar un proceso con taskkill, solamente terminamos su ejecución, no estamos “borrando” el proceso, éste se volver a ejecutar cuando demos inicio nuevamente al proceso manualmente (más abajo) o al siguiente reinicio.
IMPORTANTE: este comando debe ser ejecutado con privilegios de administración, o con una interfaz de comandos ejecutada como administrador
De esta forma terminamos definitivamente con el proceso problemático, y ahora es posible darle inicio nuevamente usando el comando:
net start <nombre_proceso>
Finalmente, el servicio volvió a subir, pero esta vez con un nuevo PID, es decir, es un nuevo proceso para el sistema:
Espero que les sea de utilidad.
Gonzalo
PowerShell 2.0 Deluxe
Como ejemplo notepad…Basico pero bueno ¡¡
Iniciar procesos con powershell –> start-process notepad
Detener procesos con powershell –> stop-process -processname notepad ó stop-process –> y solicitará el ID [0] :
Para obtener el ID get-process. –>
Este entregara:
Handles — NPM (K) — PM(K) — WS (K) — VM(M) — CPU(s) — Id — y– ProcessName
Para la ayuda de powershell get-help «ojo tambien podemos utilizar alias en powershell 2.0» Deluxe
– El cmdlet stop-process es igual de «efectivo» que taskkill?
Realice un par de pruebas y por los resultados obtenidos es igual de efectivo…¡¡
Observacion Importante: Esta herramienta «taskkill» se usa para terminar tareas mediante el Id.de proceso (PID) o nombre de imagen.
Esperando que esta informacion sea de utilidad, desde ya quedamos en contacto.
Genial el comando no lo sabia lo probe en mi windows XP SP3 y funciona ,queria consultarte donde puedo encontrar pasos de como implementar un servidor con windows server 2003,web,ftp,dhcp ,etc ,hay algun curso interactivo en linea con certificacion de microsoft que pueda hacer
saludos
Hola Rolly.
Primero que todo, Gracias por leer.
Para cursos gratuitos te recomiendo que visites http://www.microsoftmva.com. Una vez concluido cada curso obtienes un diploma.
Las certificaciones Microsoft son otra historia 🙂
http://www.microsoft.com/learning/en/us/certification/view-by-name.aspx
Muchas veces nos hemos encontrado con que al reiniciar servicios éstos se quedan “colgados”
Genial la explicación, me fue de mucha utilidad.
Muchas Gracias.