miércoles, 13 de mayo de 2015

Detener o reiniciar un servicio o aplicacion "colgado" en Windows

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.

Cualquier parecido con ps/kill es sólo coincidencia…

Los pasos son bastante simples:

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.

Ejecutamos 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

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:

4 comentarios:

  1. hola, me sirvió, gracias por la información

    saludos
    Sergio

    ResponderEliminar
  2. Perfecto. Me tenía loco el Servicio que no se terminaba de detener.
    Gracias.

    ResponderEliminar
  3. Hola puedes reiniciar un servicio desde windows server?

    ResponderEliminar
  4. Hola. Para reiniciar un servicio: ingresar a cmd como administrador, escribir net stop [nombre del servicio], presionar enter, escribir net start [nombre del servicio], presionar enter.

    ResponderEliminar

¡Gracias por colaborar en este blog con tus comentarios! :)