8 comandos de Linux para gestionar y liberar espacio en disco

Optimizando el Espacio en Disco en Linux: Herramientas y Comandos

El sistema operativo Linux es conocido por su potente funcionalidad en la línea de comandos. Como administrador de sistemas, opero varios cientos de servidores Linux y la mayoría de ellos ni siquiera utilizan una interfaz gráfica de usuario como KDE o Gnome. El mantenimiento de nuestros servidores requiere un amplio conocimiento de varios comandos útiles (aunque complejos) para mantenerlos en buen estado.

El espacio en disco a menudo es un dolor de cabeza en sistemas que almacenan y escriben muchos datos (algunos útiles, otros no). Mientras QDirStat, GdMap, xdiskusage y el Analizador de Uso de Disco de Gnome son ejemplos útiles de utilidades basadas en gráficos para medir el uso del espacio en disco, tengo un conjunto de mis propios comandos que utilizo desde la línea de comandos y puedo decir que son indispensables para mí. Aquí hay algunos de mis ejemplos favoritos.

Verificación de espacio libre

1. df

Cómo utilizar Isearch para buscar archivos de texto en Linux

Este es el comando más básico de todos; df muestra el espacio libre en disco. Esto es lo que devolverá cuando se ejecute:

[root@smatteso-vm1 ~]# df

Sistema de archivos 1K-bloques Usados Disponible Uso% Montado en

/dev/vda2 75987032 25075944 47044888 35% /

tmpfs 8162268 92 8162176 1% /dev/shm

/dev/vda1 245679 69859 162713 31% /boot

Guía para entender y gestionar los permisos de archivos y directorios en Linux

devnfs:/tools 611916000 162727328 418098496 29% /tools

Esto muestra las estadísticas en bruto sobre el uso del disco en bytes, pero para hacerlo más "legible para humanos", ejecute df con el interruptor -h:

2. df -h

[root@smatteso-vm1 ~]# df -h

Sistema de archivos Tamaño Usado Disp Uso% Montado en

/dev/vda2 73G 24G 45G 35% /

Cómo configurar un servidor Linux como puerta de enlace para una red local

tmpfs 7.8G 92K 7.8G 1% /dev/shm

/dev/vda1 240M 69M 159M 31% /boot

devnfs:/tools 584G 156G 399G 28% /tools

Esto se ve un poco más agradable a la vista. Mi volumen raíz tiene 73 GB con 45 GB de espacio libre.

3. df -Th

Cuando se trata de problemas de espacio en disco, puede ser importante saber qué tipo de sistema de archivos estás utilizando para planificar en consecuencia. Por ejemplo, el sistema de archivos ext4 en Linux tiene un tamaño máximo de sistema de archivos de 16 Tb y puede admitir archivos de hasta 2 Tb.

Windows al alcance de Linux: Accede a recursos con smbmount y smbclient

El comando "df -Th" mostrará la misma salida que en el comando anterior, pero también incluirá los tipos de sistemas de archivos:

[root@smatteso-vm1 usr]# df -T -h

Sistema de archivos Tipo Tamaño Usado Disp Uso% Montado en

/dev/vda2 ext4 73G 24G 45G 35% /

tmpfs tmpfs 7.8G 92K 7.8G 1% /dev/shm

/dev/vda1 ext4 240M 69M 159M 31% /boot

Cómo configurar y utilizar logrotate para la gestión de archivos de registro en Linux

ramfs ramfs 7.8G 92K 7.8G 1% /dev/shm

nfs nfs 584G 156G 399G 29% /tools

Encontrar el tamaño de los datos

Ahora que he establecido cómo determinar el espacio libre, ¿cómo podemos averiguar qué está usando espacio?

4. du -sh *

El comando du significa "disk usage" (uso de disco). En su uso más básico, si simplemente ejecutas "du" en el volumen raíz, te mostrará el tamaño de todos los directorios en tu sistema. Sin embargo, esto puede producir una gran cantidad de información difícil de analizar.

Cómo instalar y configurar ALSA en Linux: Guía paso a paso

Agregando los interruptores -sh ("s" significa "resumir" y nuevamente, "h" significa "formato legible para humanos") para ejecutar du -sh * en el volumen raíz, producirá una salida más limpia.

[root@smatteso-vm1 /]# du -sh *

0 BEVAP

12M bin

67M boot

0 CTF

Consejos rápidos para la navegación de directorios en Linux: cd y pushd

16M db2dump

304K dev

65M etc

0 FEVAP

0 HHFE

2.1G home

Cómo configurar y optimizar el enrutamiento estático en Linux

0 LDW

329M lib

30M lib64

16K lost+found

4.0K media

0 misc

Cómo utilizar select() y poll() para multiplexar sockets de red

4.0K mnt

0 net

2.8G opt

0 proc

0 PUBAUTH

1.3M root

Cómo convertir una caja de Linux en un router OSPF y BGP

20K RTVIEW

16M sbin

4.0K SCURVY

4.0K selinux

4.0K srv

0 sys

4.3M tmp

7.1G tools

15G usr

3.9G var

Puedes ver fácilmente qué directorios contienen la mayor cantidad de datos; el directorio usr tiene 15 GB, tools tiene 7.1 GB y var tiene 3.9 GB. Vamos a centrarnos en el directorio /var.

Podría ingresar a /var y volver a ejecutar du -sh * para ver el tamaño de los subdirectorios, pero dado que hay muchos subdirectorios de diferentes tamaños, esto puede no ser útil, ya que tendría que ejecutar el mismo comando varias veces. En cambio, puedo ejecutar lo siguiente:

5. du -a /var | sort -nr | head -n 10

Analicemos esta cadena de comandos:

du es el comando para el uso de disco, por supuesto.

-a es el interruptor "all" para mostrar todos los elementos.

/var le indica a du que analice el directorio /var.

El carácter de tubería ("|") envía los resultados al comando sort.

sort -nr mostrará los directorios más grandes en la parte superior de la lista.

El carácter de tubería ("|") envía los resultados al comando head.

head -n 10 limitará el número de resultados a los diez directorios más grandes.

Cuando ejecuto esto en mi sistema, obtengo la siguiente salida:

[root@smatteso-vm1 var]# du -a /var | sort -nr | head -n 10

4042044 /var

3473128 /var/cache

3470188 /var/cache/yum

572308 /var/cache/yum/x86_64

572304 /var/cache/yum/x86_64/6Server

375388 /var/log

373056 /var/cache/yum/rhel6-auto-20170111

370676 /var/cache/yum/rhel6-auto-20161228

370496 /var/cache/yum/rhel6-auto-20161214

370308 /var/cache/yum/rhel6-auto-20161130

Esto me muestra que los elementos más grandes son el directorio /var en sí (obviamente), seguido de /var/cache y /var/cache/yum.

Esos cuatro directorios en la parte inferior de la lista representan conjuntos de parches lanzados cada dos semanas. Es seguro eliminar los directorios antiguos, por lo que el comando rm -rf /var/cache/yum/rhel6-auto-2016* podría liberar más de 1 GB de espacio eliminando esos directorios antiguos de conjuntos de parches.

Nota: para ejecutar esto en todo el sistema de archivos, simplemente cambia:

du -a /var | sort -nr | head -n 10
a
du -a / | sort -nr | head -n 10

Es posible ser más técnico utilizando lo que se conoce como una expresión regular (regex) para filtrar los resultados de manera más explícita. Echemos un vistazo más de cerca a todo el sistema de archivos.

6. du -xh / |grep '^\S*[0-9\.]\+G'|sort -rn

Parece muy complicado, pero es fácil de entender:

du es el comando de uso de disco

-x le indica a du que solo examine este sistema de archivos (hace que el comando se ejecute más rápido) y la h después de él es para presentar los resultados en un formato legible para humanos.

El carácter de tubería ("|") envía los resultados al comando grep.

grep busca los resultados usando la expresión regular '^\s*[0-9\.]\+G' - [0-9\.] mostrará todos los directorios y subdirectorios que comiencen con (\S) caracteres que no sean espacios en blanco (como una tabulación, retorno de carro, etc.) - debe mostrar solo caracteres alfabéticos (sin caracteres numéricos) y +G mostrará directorios de 1 GB o más de tamaño.

El carácter de tubería ("|") envía los resultados al comando sort.

sort -rn mostrará los directorios más grandes en la parte superior de la lista.

Cuando ejecuto esto en mi sistema, obtengo la siguiente salida:

[root@smatteso-vm1 var]# du -xh / |grep '^\S*[0-9\.]\+G'|sort -rn

24G /

15G /usr

12G /usr/local

5.7G /usr/local/litle-db/phxinst1

5.7G /usr/local/litle-db

3.9G /var

3.4G /var/cache/yum

3.4G /var/cache

3.2G /usr/local/litle-build

2.8G /opt

2.7G /usr/local/litle-tools

2.1G /home/smatteso/bin

2.1G /home/smatteso

2.1G /home

1.7G /usr/share

1.6G /usr/local/litle-db/phxinst1/FEVAP

1.6G /usr/local/litle-db/phxinst1/BEVAP

1.5G /usr/local/litle-build/LETS

1.1G /opt/ibm/db2/V9.7

1.1G /opt/ibm/db2

1.1G /opt/ibm

Esto me indica que podría liberar algo de espacio en mi directorio home, ya que estoy usando 2.1 GB.

Limpiar los directorios es una forma de recuperar espacio, pero puede ser tedioso navegar y encontrar archivos grandes que puedas encontrar. El comando "find" puede ser de gran ayuda para identificar exactamente qué archivos están ocupando espacio.

7. find / -printf '%s %p\n'| sort -nr | head -10

El anterior es uno de mis comandos favoritos, ya que me mostrará los diez archivos más grandes en mi sistema. Al igual que antes, vamos a desglosarlo.

find es el comando find para buscar archivos, obviamente.

/ es el volumen raíz

-printf '%s %p\n' formateará los resultados mostrando el tamaño del archivo en bytes (%s) y el nombre del archivo (%p).

El carácter de tubería ("|") envía los resultados al comando sort.

sort -nr mostrará los directorios más grandes en la parte superior de la lista.

El carácter de tubería ("|") envía los resultados al comando head.

head -n 10 limitará el número de resultados a los diez directorios más grandes.

Al ejecutar esto en mi sistema, obtengo los siguientes resultados:

[root@smatteso-vm1 var]# find / -printf '%s %p\n'| sort -nr | head -10

582359040 /tools/infra/DWI_Bundles/3.0/LETS/LETS.tar

582359040 /tools/infra/DWI_Bundles/2.0/LETS/LETS.tar

582348800 /usr/local/litle-build/LETS/LETS-1.3.2-RC1.tar

572129280 /tools/infra/DWI_Bundles/4.0/eclipse/eclipse.tar

572129280 /tools/infra/DWI_Bundles/3.0/eclipse/eclipse.tar

571985920 /tools/infra/DWI_Bundles/1.0/LETS/LETS.tar

491255472 /usr/local/litle-build/LETS/eclipse-lets-mars-2-linux.gtk.x86_64.tar.gz

489757504 /usr/local/litle-build/LETS/eclipse-lets-mars-2-linux.gtk.x86_64.rc1.tar.gz

407285760 /tools/infra/DWI_Bundles/4.0/accurev/accurev.tar

407285760 /tools/infra/DWI_Bundles/3.0/accurev/accurev.tar

¡Eh, qué hace ese archivo ejecutable de Windows setupSkybotSchedulerAgent.exe en mi sistema Linux? ¡Eso es 1.3 GB que puedo eliminar de inmediato!

Decidiendo qué limpiar

Encontrar lo que está ocupando espacio en tu sistema de archivos es la parte fácil. Sin embargo, determinar qué puedes eliminar es más complicado. En los ejemplos anteriores encontré algunos casos sencillos, como eliminar directorios antiguos de conjuntos de parches y un ejecutable de Windows. Sin embargo, eliminar archivos a ciegas es obviamente un procedimiento extremadamente arriesgado y peligroso. Si encuentras grandes archivos de bases de datos y los eliminas, podrías tener consecuencias catastróficas.

Todos los sistemas de archivos y sus contenidos son diferentes, por lo que puedes encontrar archivos .log (archivos de registro que son relativamente inofensivos para eliminar), archivos .rpm (archivos de paquetes de Red Hat), archivos .tar o .tar.gz (archivos de archivo), archivos .iso (imágenes de disco), documentos, archivos multimedia y más. Verifica la propiedad de los archivos y consulta con las personas responsables antes de eliminar cualquier cosa, y asegúrate de tener una copia de seguridad válida por si necesitas deshacer tus acciones.

Conclusión

Estos son solo algunos de los muchos comandos potentes (y los interruptores de comandos correspondientes) que puedes ejecutar en Linux. Te aconsejo que experimentes, leas las páginas del manual de df, du y find, y explores opciones similares o incluso más robustas.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Código abierto, allí encontraras muchos artículos similares a 8 comandos de Linux para gestionar y liberar espacio en disco , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.