Monday, July 20, 2015

Comando kill: asesiná procesos atacados.

Como n00b es difícil no meter la pata muy de vez en cuando. Justo hace unos momentos estaba reinstalando Noise (Music en Freya y Luna) para diagnosticar e intentar un problema que tuve con él y mi librería de música. Se instala con  

$ sudo apt-get noise 

cuando recordé que en algunos sitios he encontrado la siguiente variación:

$ sudo apt-get install -y nombre_del_programa_a_instalar_acá

y al hacer esto, el prompt que anuncia:

"After this operation, 4,829 kB of additional disk space will be used. Do you want to continue? [Y/n]" 

se salta, tal y cual lo describe $ apt-get --help, así que ya no es necesario estar presente durante la descarga para decir que "sí" a la instalación (vamos que podés ir al baño o por comida al refrigerador mientras la tarea corre por sí sola). La opción -y significa "Assume Yes to all queries and do not prompt": asumir que sí a las preguntas y no pedir respuesta. Como decía, recordé esa opción -y así que cancelé con Ctrl + z la operación. Cosa que fue tonta porque pude simplemente contestar "n" para abortar.  Así que cuando intenté 

$ sudo apt-get install -y noise

Recibí 

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Intenté nuevamente, recibí el mismo error. Yo fui el responsable de este problema. Luego de una Googleadita rápida, descubrí que el /var/lib/dpkg es un directorio usado cuando APT está procesando una paquete/programa para su descarga e instalación. Al menos esa es la explicación más útil que encuentro para mi nivel de conocimiento. El punto es, no podía instalar porque el directorio usado para tal fin está "bloqueado y siendo usando por otro proceso". 

Busqué información para resolver esto. Hace tiempo conocí a kill y pkill pero esta vez no sabía cómo identificar el proceso. Entonces en un maravilloso thread del foro de Ubuntu, encontré las siguientes instrucciones: 

Primero: Identificar el ID del proceso que está atascando al apt-get:

$ ps aux | grep apt
este comando nos mostrará el número del proceso que está usando el apt del comando apt-get:

root      6020  0.2  0.0  72648  4020 pts/14   S+   22:07   0:00 sudo apt-get install noise
root      6021 11.0  0.7  90548 59296 pts/14   S+   22:07   0:00 apt-get install noise


El número del proceso se muestra en la segunda columna, justo después del nombre de usuario (para el caso, recordemos que sudo = SuperUserDO, lo que implica que es el root quien instala). 

Segundo: con esta información, podemos darle jaque mate al proceso:

$ kill -9 6020

El -9 es una opción dada por el comando kill e implica que el proceso será terminado forzosamente; o sea, que le damos jaque mate irremediable.  Ya con esto, pude continuar felizmente mi camino de destrucción accidental :v 

Espero que esto sirva. Recordá, si un día se atasca el apt-get, 

$ ps aux | grep apt



$ kill -9 númerodeprocesoacá

son tus mejores amigos :)

No comments:

Entradas populares.