¿Cómo detener/reiniciar efectivamente un servicio o aplicación que está “colgado”?

Muchas veces nos hemos encontrado con que al reiniciar servicios éstos se quedan “colgados” en estado “deteniendo” o “iniciando”.

image

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).

image

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:

image

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

image

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

image

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

image 

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:

image

Espero que les sea de utilidad.

Gonzalo

5 comentarios sobre “¿Cómo detener/reiniciar efectivamente un servicio o aplicación que está “colgado”?”

  1. 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.

  2. 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

Deja un comentario

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