martes, 30 de septiembre de 2008

Taskkill, el comando asesino

Hoy martes, por ser ayer día de San Miguel (aprovecho para autofelicitarme de nuevo...), toca batallita informática. ¿Cuántas veces habéis visto en Windows el texto de "No responde" al lado de la barra de título de una aplicación? Tranqui, no os alarméis, como diría algún colega mío, eso es simplemente que la aplicación "se ha quedao perlada", un "cuelgue", lo hemos sufrido tod@s l@s usuari@s güindoseros alguna vez. ¿Os suena verdad?

Como usuarios conocedores del entorno que somos ;-), en estos casos es cuando pulsamos de forma simultánea (y de mala leche) las teclas Control+Alt+Suprimir (yo utilizo Control+Shift+Escape, es más directa) para ir al "Administrador de tareas" de Windows. Una vez allí, seleccionarmos la tarea o programa "conflictivo" que no da la talla y ¡zas, finalizar tarea! Quien más quien menos, cualquier usuario de nivel medio-avanzado que utiliza Windows ha tenido que hacer esto alguna vez. Y si me apuráis, los hay maniáticos como yo que acuden directamente a la pestaña "Procesos" del "task manager" y por rapidez, como ya conocen el nombre del proceso a matar, lo seleccionan de la lista y se lo cargan sin piedad pulsando "Terminar proceso":

En cambio hoy, mi PC tenía el día tontito, tan tontito que no me dejaba terminar de ninguna de las formas anteriormente descritas con un proceso de ésos que se ha quedao perlao. Lo he intentado por activa y por pasiva, pero ni caso, la aplicacioncilla que quería aniquilar seguía vivita y coleando:

Con mi furia a punto de estallar, busco (en inglés) en el buscador que hace poco cumplía diez años (¡cómo pasa el tiempo!) y voy a dar con un post que habla del comando taskkill, y de seguido, accedo a la referencia oficial del comando taskkill. "¡Qué grande! Justo lo que necesito..." he pensado (inocentemente) para mis adentros. Raudo y veloz, abro una ventana de línea de comandos (Inicio-->Programas-->Accesorios-->Símbolo del sistema ó Inicio-->Ejecutar-->Teclear cmd y pulsar Intro), y tecleo taskkill /? para ver la ayuda de este comando interesante:

Como la aplicación perlada es una aplicación un poco "especialita" que hace uso de los puertos USB y a su vez de otras librerías de más bajo nivel, he pensado que quizás convenía forzar su terminación con el parámetro "/F" (¡para qué andarse con chorradas!) y terminar también cualquier aplicación dependiente, que para eso tenemos el modificador "/T".

Al igual que vosotros, yo también he esbozado una sonrisa murmurando "¡qué fácil!". Por el mensaje de la pantalla anterior pensaréis que he podido matar el proceso sin problemas, ¿a qué sí? Pues tengo que deciros que no ha sido así ya que la aplicación de marras seguía perlada, pero vivita y coleando, es decir, seguía ejecutándose "algo" en Windows. He pensado que habría hecho algo mal, así que he probado varias cosas: indicar el identificador de proceso con "/PID", terminar primero con su proceso padre y mil cosas más:

Por mucho que los mensajes eran de éxito, ná de ná, allí seguía ejecutándose la muy.... con las esperanzas que había puesto yo en el taskkill, siento decir que me ha defraudado bastante ya que no he podido terminar de ninguna manera la maldita aplicación que se me había quedado perlada. He probado a cerrar sesión y volver a entrar, pero allí seguía la aplicación con el cartelito de "(No responde)" por bandera. Así que no me ha quedado otra que resignarme, tragarme todo mi orgullo informático y reiniciar la máquina. De auténtica traca...

Así que el día de hoy ha tenido dos conclusiones, una positiva y otra negativa: empezamos por la positiva reconociendo que el comando taskkill es bastante potente para terminar procesos de forma rápida desde la línea de comandos, sobre todo cuando no responden ni de coña. Significar que sólo está disponible en las versiones "Professional" de los sistemas operativos Windows, es decir, no viene por ejemplo en el Windows XP Home Edition que tiene mucha gente en casita. No sé cómo va el tema de las versiones en Windows Vista, yo os aseguro que Windows XP Professional dispone de este comando.
Sin embargo, la conclusión negativa de hoy ha sido que no he sido capaz de terminar dicho proceso con este comando. Tengo la sospecha de que ha sido por utilizar directamente el parámetro "/T" que indica que dicho proceso tiene dependencias, cuando realmente era este proceso quien dependía de otros, concretamente de su proceso lanzador, Visual Studio en este caso. En fin, que no sé qué ha pasado con esta aplicación en concreto, pero por las pruebas que he realizado a posteriori, taskkill me ha parecido super útil. Por cierto, al igual que hace el "task manager", existe un comando "amigo de taskkill" que muestra los procesos que corren actualmente en nuestro PC, con su PID, memoria que están consumiendo etc. El comando se denomina tasklist:
¿Conocíais este comando de Windows? En cuanto a los linuxeros, ¿qué comando utilizáis para matar/terminar procesos de forma abrupta?

Actualización 01/10/2008: Me acaba de volver a pasar, se me ha vuelto a perlar la aplicacioncilla con la que estoy trasteando y la opción gráfica de "Finalizar tarea o proceso" no chuta. Esta vez, con la intención de hacer las cosas bien, primero he intentado utilizar taskkill /F /T /IM devenv.exe para ver si matando el proceso del Visual Studio, de paso mataba a su proceso hijo, la maldita aplicación "tocapelotas". Pues comentaros que tampoco funciona, así que debería cambiar el calificativo de "comando asesino" por el de "comando homicida imprudente". Mecagüen la leche, lo que más me jode es que tengo que volver a reiniciar....

SaludoX.


11 comentarios:

Unknown dijo...

Es curioso, seguimos una evolucion inversa. Yo en linux y unix siempre he usado 'ps -f -u josu' para ver la lista de procesos, 'kill xxxpid' para matarlo, y 'kill -9 xxxpid' por si se resiste. Luego me pasé al xkill, que saca un cursor especial, clicas en cualquier ventana, y la cierra, junto con su proceso asociado.

A raíz de tu post de hoy me he puesto a mirar, y he visto que Ubuntu tiene un Monitor de Sistema completito, con lista de aplicaciones, consumo de cpu, memoria y disco. Incluso se puede hacer que salga al pulsar Ctrl-Alt-Del, para que el que viene de Windows se sienta como en casa, con su clásico 'three-finger salute' :)

Anónimo dijo...

Gracias por ilustrarme en comandos Unix/Linux Josu, si es que todos los días se aprende algo nuevo. Un colega del curro me comentaba hoy el mismo truco del "-9" para matar procesos cabroncetes, pero claro, en Windows como que no...desde luego, con el segundo cuelgue de hoy queda probado que el comando taskkill no me soluciona nada, y eso que prometía...

Respecto a la solución del "saludo con los tres dedos" (¡qué bueno!), mucha gente con background Linux empieza a criticar Ubuntu porque se empieza a parecer demasiado a Windows, eso sí, gratis ;-).

Gracias y saludoX.

Anónimo dijo...

¡Muy buenas!

Excelente el repaso a taskkill, un comando que (imperdonable) no conocía. En efecto, cuando uso Linux estoy más acostumbrado a usar la consola para todo, pero en Windows (aun usandola habitualmente) se nos olvida en ocasiones lo potente que puede llegar a ser la consola, más aún desde la llegada de PowerShell a nuestros equipos (otra filtración entre Linux y Windows, esta vez del primero al segundo, al igual que el Windows 2008 Server Core, sin gestor gráfico de ventanas).

Lo interesante es ver cómo ambos acercamientos pueden complementarse y aprender unas de otras, al margen de implicaciones morales en uno u otro sentido.

Un saludo,

Mith.

Anónimo dijo...

Buenas Mith, ya ves, muchas veces, si no es por necesidad no nos enteramos de estas pequeñas grandes utilidades que esconde la línea de comandos, ya sea en Unix, Linux pero sobre todo en Windows, donde la gente prácticamente tiene olvidada a la pobre command window, con lo simpática que es ;-). Aunque en este caso tampoco me haya servido de mucho, es interesante conocer la existencia de comandos tipo taskkill.

Powershell es otra de mis muchas asignaturas pendientes y gracias por el apunte sobre Windows Server 2008 Core, lo desconocía en absoluto.

Respecto al "mix" o acercamiento entre plataformas, totalmente de acuerdo, no hay que ser talibán y hay que aprovechar las cosas buenas que nos ofrece cada una de ellas.

Gracias y saludoX.

Anónimo dijo...

TIRA de IDIOTAS por si o lo sabian taskkill no siempre mata procesos ademas hay otro comando de windows que si los mata en inclusive te puede dejar desprotegido y hay uno mas bueno que te permnite ver todas las aplicaciones en linea, les falta invextigar pero por suerte pase por aqui para dejarles algunas noticias .....
Nos vemos Pavos......

Anónimo dijo...

@Anonimo, pues ya sabes, cuando quieras compartir tus por lo visto excelentes y deslumbrantes conocimientos en la materia, si te da la gana, los compartes, eso sí, a poder ser, sin insultar, que no creo que aquí, a ti, nadie te haya faltado al respecto.

SaludoX.

Anónimo dijo...

para el anonimo q escribio, jajaja pibee tomatelas si no keres ayudar pa q te metes aca gilaso... esta gente como vos no merece existir, con respecto a los demas, exciste varias formas de matar procesos una es el tasklist, aunque hay veces q no los mata, en el caso de que no, es porq puede ser que este dependiendo de otro proceso, en este caso habrar q buscar de que proceso depende y matarlo, osea matar el "proceso madre" del que quieren cerrar, y listo el problema.

elmercenario_mati@hotmail.com

si kieren ayuda agregenme

Unknown dijo...

Me has aclarado mucho, anónimo, y de paso has resuelto otra duda que tenía. Tanto tiempo programando sistemas, y no sabía que los procesos, pese a ser masculinos, son 'madres' (esto debe ser lo de los algoritmos 'genéticos' que he leído por ahí).

Gracias.

Anónimo dijo...

Al fin y al cabo, todo queda en familia ;-).

SaludoX.

Anónimo dijo...

oye, no probaste usando RUNNIG: NOT RESPONDING nombre de la imagen?Solo pregunto

Cloud, Master of Materia dijo...

Pues, nada comentaros que el Taskkill no me hace ni puñetero caso, y eso que la aplicación que quiero cerrar no es un virus, ni es nada... raro.

Es un programa de uso MUY frecuente que estaba funcionando hasta que le dado la vena de dejar de hacerlo.

Estaba minimizado y ha dejado de ir, pero se ha "kedado" en memoria, pillando ciclos de reloj (el 50% nada menos)

Entonces ni con el Administrador de dispositivos, ni con programitas especiales, ni con el CMD + PID y el taskkill nada de nada.

No kiere y no kiere.

Eso es lo que me da rabia de windows, en realidad NO tienes control sobre el, interactuas con él, pero HACE LO QUE LE DA LA GANA, y normalmente para mal...