En esta entrada voy a explicar cómo llegué a eliminar kernels utilizando 3 interesantes comandos (grep, cut y awk) junto a apt-get y dpkg.
Comando:
- grep es para filtrar el resultado de una instrucción o un archivo mediante una expresión regular.
Ejemplo: Queremos conocer todos los archivos que cuyo nombre contengan «pera», entonces hacemos:
$ ls | grep pera
desespera-sh
espera.mp3
peralta.png
peras.doc - cut se utilizará para delimitar los caracteres del resultado.
$ ls | grep pera | cut -d p -f2
era-sh
era.m
eralta.
eras.docLa opción -d es para delimitar según un caracter y la opción -fn nos indicará a partir del número de carácter repetido. Suponiendo tres ejemplo sería:
$ echo Me gusta comer palta con dulce de leche | cut -d t -f1
Me gus
$ echo Me gusta comer palta con dulce de leche | cut -d t -f2
a comer pal
$ echo Me gusta comer palta con dulce de leche | cut -d t -f3
a con dulce de leche - awk es un comando de Perl y lo utilizaremos para que solo aparezca en pantalla una columna específica.
Supongamos que tengamos un archivo que contenga tabla con varias columnas y queremos ver la tercera columna, hacemos esto:
cat tabla.txt | awk '{print $3}' - dpkg con la opción --get-selections nos muestra todos los paquetes que tenemos instalados y desinstalados sin removerlos del todo.
Algunos trucos a tener en cuenta:
En GNU/Linux podemos utilizar el resultado de un comando dentro de otro con el signo $ segundo del comando entre paréntesis. Por ejemplo queremos crear un directorio que cuyo nombre contenga la fecha y hora actual utilizando «mkdir» y «date».
El comando «date» quedará así devolverá: año-mes-día.hora:minutos:segundos
date +%Y-%m-%d.%H:%M:%SEntonces harémos esto:
$ mkdir $(date +%Y-%m-%d.%H:%M:%S)También podemos introducir dos o más comandos separándolos con un punto y coma (;). En este ejemplo editarémos un archivo con «nano» y luego visualizaremos su contenido con «cat».
$ nano archivo.txt; cat archivo.txtBueno, habiendo explicado lo anterior, nos centráremos en como eliminar los kernels antiguos.
Primero tenemos que ver y analizar con qué kernels iniciamos la PC:
$ uname -rLuego vemos qué paquetes de nuestro núcleo tenemos instalados:
$ dpkg --get-selections | grep linux-
linux-firmware install
linux-generic install
linux-headers-3.0.0-14 install
linux-headers-3.0.0-14-generic install
linux-headers-3.0.0-15 install
linux-headers-3.0.0-15-generic install
linux-headers-generic install
linux-image-3.0.0-14-generic install
linux-image-3.0.0-15-generic install
linux-image-generic install
linux-libc-dev install
linux-sound-base install
syslinux-common install
syslinux-themes-debian install
syslinux-themes-debian-squeeze installCaramba, con dpkg --get-selections | grep linux- salen paquetes que no pertenecen a los kernel. Entonces tendremos que seguir filtrando.
Primero lo haremos con linux-headers:
$ dpkg --get-selections | grep linux- | grep headers
linux-headers-3.0.0-14 install
linux-headers-3.0.0-14-generic install
linux-headers-3.0.0-15 install
linux-headers-3.0.0-15-generic install
linux-headers-generic installTodavía no me gusta... tenemos que sacar el linux-headers-generic. La opción -v en grep significa filtrar todo lo que es distinto a la versión actual:
$ dpkg --get-selections | grep linux- | grep headers | grep -v headers-generic
linux-headers-3.0.0-14 install
linux-headers-3.0.0-14-generic install
linux-headers-3.0.0-15 install
linux-headers-3.0.0-15-generic installAhora, de esta lista tenemos que quitar la versión actual y eso es complicado. Existen dos paquetes linux-headers-3.0.0-15 y linux-headers-3.0.0-15-generic. Si le agregamos al comando el filtro «grep -v $(uname -r)» solo nos filtrará linux-headers-3.0.0-15-generic. Para que filtre los dos paquetes tenemos que generar el nombre linux-headers-3.0.0-15 de la siguiente utilizar el comando «echo» con «uname» y «cut».
En este casi lo primero que se genera es: 3.0.0
$ uname -r | cut -d \- -f1
3.0.0Luego hacemos para generar el 15:
$ uname -r | cut -d \- -f2
15Y usamos el comando «echo» para juntar todo.
$ echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)
3.0.0-15Entonces a esto lo utilizamos de la siguiente manera:
$ dpkg --get-selections | grep linux- | grep headers | grep -v headers-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2))
linux-headers-3.0.0-14 install
linux-headers-3.0.0-14-generic installCon awk le sacamos los install:
$ dpkg --get-selections | grep linux- | grep headers | grep -v headers-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)) | awk '{print $1}'
linux-headers-3.0.0-14
linux-headers-3.0.0-14-genericPara linux-image-* hacemos el mismo procedimiento:
$ dpkg --get-selections | grep linux- | grep image | grep -v image-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)) | awk '{print $1}'
linux-image-3.0.0-14-genericAhora juntamos los comandos:
$ dpkg --get-selections | grep linux- | grep headers | grep -v headers-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)) | awk '{print $1}'; dpkg --get-selections | grep linux- | grep image | grep -v image-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)) | awk '{print $1}'
linux-headers-3.0.0-14
linux-headers-3.0.0-14-generic
linux-image-3.0.0-14-genericY por último los eliminamos:
$ sudo apt-get --purge remove $(dpkg --get-selections | grep linux- | grep headers | grep -v headers-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)) | awk '{print $1}'; dpkg --get-selections | grep linux- | grep image | grep -v image-generic | grep -v $(echo $(uname -r | cut -d \- -f1)-$(uname -r | cut -d \- -f2)) | awk '{print $1}')
No se puede hacer tambien con el Ubuntu tweak,o solo funciona en ubuntu?
Por lo que leí, Ubuntu Tweak es una aplicación para personalizar Ubuntu y no un S.O.
Ya lo se. Me referia si el Ubuntu tweak solo funciona en Ubuntu o Tambien en kde.Ya que hay un apartado en donde te aparecen los kernels instalados y los antiguos,aparte hay una opción que dice limpiar kernels
Ya lo se. Me referia si el Ubuntu tweak solo funciona en Ubuntu o Tambien en kde.Ya que hay un apartado en donde te aparecen los kernels instalados y los antiguos,aparte hay una opción que dice limpiar kernels
No te sabría decir, solo fui explicando el razonamiento para llegar al resultado adecuado.
Qué bueno que sigas jugando con la consola.
Deberías corregir el artículo porque en varias partes escribiste awn en vez de awk. El delimitador puede escribirse entre comillas así "-" por lo que no necesitas escribirlo así \- ; además entre comillas es más fácil percibir si se usa un espacio como delimitador: " ", que sólo escribir \ . El parámetro -f (field, campo) significa que lo que haya antes del primer delimitador será el primer campo, lo que haya después del primer delimitador será el segundo campo, y así sucesivamente. En el renglón siguiente manzana es el primer campo, pera el segundo campo, piña el tercer campo:
manzana pera piña (el delimitador sería " ")
manzana,pera,piña (el delimitador sería ",")
manzana:pera:piña (el delimitador sería ":")
manzana_pera_piña (el delimitador sería "_")
Saludos,
Sidd.
"[...] Supongamos que tengamos un archivo que contenga tabla con varias columnas y queremos ver la tercera columna, hacemos esto: cat tabla.txt | awk '{print $1}' [...]"
Sigo leyendo el artículo ...
El último paréntesis (exactamente el último de todo el artículo) sobra:
awk '{print $1}')Después de ver que deshiciste el cambio que ya había hecho yo en la Wiki me di cuenta que fue mi error lo del paréntesis ... pero hombre, me hubieras dicho por lo menos
Saludos,
Sidd.
Hola gaska92, es para ubuntu, lo probaron en xubuntu y andan dos o tres cosas, nada mas. Sería todo un logo que este buen programa(ubuntu tweak) tuviera versiones para u/xu/y kubuntu.
Hola gaska92, es para ubuntu, lo probaron en xubuntu y andan dos o tres cosas, nada mas. Sería todo un logo que este buen programa(ubuntu tweak) tuviera versiones para u/xu/y kubuntu.
Lo peor del caso es que el Ubuntu Tweak de ahora ya no sirve como el de antes,solo sirve para personalizar...que desgracia,ya que quitaron una muy buena utilidad.