Tutoriales

Libera espacio en tu sistema Linux con esta herramienta de código abierto

Si usted es un administrador de sistemas de profesión o simplemente se ocupa de un servidor comercial doméstico que se está quedando sin espacio en su cuarto de servicio, probablemente necesite averiguar dónde se desperdiciará su espacio en disco.herramientas como esta du y df te involucrará. Pero cuando necesita despejar el espacio rápidamente, necesita un tipo diferente de utilidad para llenar los vacíos.

[ Learn how to manage your Linux environment for success. ]

este es mi lugar Principales generadores de informes de consumidores de disco Los servicios públicos son útiles. Esta herramienta de código abierto (GPLv3) le permite despejar el espacio con un mínimo de trabajo de detective.mediante la ejecución topdiskconsumer Desde cualquier directorio del sistema de archivos, informa el espacio libre total, los archivos más grandes, los directorios y los archivos antiguos, y los archivos eliminados cuyo espacio aún está en uso.

Esta utilidad se puede utilizar para la administración diaria, la solución de problemas de uso del disco en servidores de producción y como herramienta de capacitación para administradores de sistemas junior.

antecedentes

Creé este script hace unos años y lo he mantenido (y reescrito) desde entonces. Originalmente estaba mal codificado porque creció orgánicamente. Agregué cada función a medida que necesitaba recopilar información para incluir en las actualizaciones de tickets para justificar las acciones realizadas en el servidor. Mi pequeña frase ingeniosa finalmente se convirtió en un gigante de 2,5 KB y fue ampliamente utilizada por los clientes de una gran empresa de alojamiento. Sin embargo, a excepción de una variable (intNumFiles) se puede asignar al comienzo del script, que está completamente codificado y se analiza torpemente con utilidades como df Obtenga estadísticas específicas de una manera muy ineficiente.

He estado planeando reescribirlo como una utilidad de línea de comandos completa, que incluye interruptores para desactivar informes específicos, tiempos de espera, opciones de formato que no sean bbcode y pantallas de ayuda.

LEER  Notificación de espacio de teclas de Redis
Publicaciones relacionadas

Todavía tengo la versión original de este script y me avergonzaría lo malo que fue el código si no fuera por cómo creció orgánicamente y sirvió como una herramienta de enseñanza para mis alumnos. Me enorgullece poder enseñar a los ingenieros junior cómo tomar la información y las herramientas que tienen, y analizar y reutilizar la salida para impulsar otras herramientas.

Instale el generador de informes de consumidores de discos principales

El proceso de instalación es simple. Aquí están los pasos básicos:

1. abierto kit de almacenamiento Un repositorio en un navegador web.

2. Haga clic en el verde el código encima de la lista de archivos.

3. Haga clic en Copiar botón.

(Kimberly Lazarski, CC BY-SA 4.0)

4. Abra una terminal y cambie al directorio donde desea descargar el archivo.

5. Tipo git clone Clona el proyecto.

6. Entrada cd storagetoolkit Cambie al subdirectorio que Git creó para usted.

7. Entrada sudo chmod a+x para asegurarse de que el script tiene permisos de ejecución.

8. Enumere los archivos, su nombre de usuario los tendrá:

$ sudo chmod a+x topdiskconsumer
[klazarsk@klazarsk storagetoolkit]$ ls -lh
total 16K
-rw-rw-r--. 1 klazarsk klazarsk 3.4K Jan  6 15:29 README.md
-rwxrwxr-x. 1 klazarsk klazarsk  11K Jan  6 15:29 topdiskconsumer

9. uso sudo o privilegios de root para copiar el archivo a /usr/bin u otro directorio del sistema en la ruta de búsqueda (o ~/.local/bin Si no desea ejecutarlo en el directorio de su sistema, use la cuenta desde la que desea ejecutarlo):

$ sudo cp topdiskconsumer /usr/bin -v
[sudo] password for klazarsk:
'topdiskconsumer' -> '/usr/bin/topdiskconsumer'
[klazarsk@klazarsk storagetoolkit]$ ls -lh /usr/bin/topdiskconsumer
-rwxr-xr-x. 1 root root 11K Jan  6 15:32 /usr/bin/topdiskconsumer

Ahora puede ejecutar el archivo desde cualquier lugar de su sistema.

Encuentre qué archivos y directorios están usando espacio de almacenamiento

Para utilizar esta herramienta, configure el topdiskconsumer Coloque el archivo en un directorio en la ruta de búsqueda, chmod Viene como un ejecutable y ejecútelo desde cualquier directorio en el sistema de archivos que desea analizar.

Este script generará un informe del uso general del disco en el sistema de archivos, enumerando los 20 archivos más grandes, los 20 directorios más grandes y los 20 archivos más grandes con más de 30 días. También encontrará «fantasmas» identificando archivos no vinculados (archivos eliminados) que aún ocupan espacio debido a identificadores de archivos abiertos. Incluso muestra el identificador del archivo para que pueda recuperar ese espacio fácilmente.

He combinado los formatos HTML, ANSI y bbcode para encabezados en negrita, siendo ANSI el predeterminado. También incluí opciones de línea de comandos, incluidos tiempos de espera, la capacidad de omitir metadatos y omitir informes para ahorrar tiempo.tener una lista opciones de línea de comando el seguimiento.

Si desea ejecutarlo en sistemas de archivos enormes, le recomiendo utilizar los interruptores de la línea de comandos para desactivar los informes que no le interesan y ejecutarlo en una sesión de pantalla o tmux. Como alternativa, puede establecer un tiempo de espera para que cada informe finalice después de un tiempo específico (la ejecución de una carga con una gran cantidad de archivos puede demorar varios días).

[ Want to test your sysadmin skills? Take a skills assessment today. ]

salida de muestra

Intente ejecutar el ejemplo para ver los cinco principales consumidores de disco en su sistema. A continuación se muestra el resultado, con cada sección limitada a cinco elementos. (Darse cuenta: 5 Largest Directories Los resultados muestran «Total» como entradas adicionales que exceden el límite de conteo. Esto es a propósito. )

$ sudo ./topdiskconsumer --number 5

#_# BEGIN REPORT
== Server Time at start: ==
Wed Jan  4 13:53:08 EST 2023

== Filesystem Utilization on [ /home ]: ==
Filesystem                Type  Size  Used  Avail  Use%  Mounted  on
/dev/mapper/RHEL-Home  xfs   100G  45G   56G    45%   /home    

== Inode Information for [ /home ]: ==
Filesystem                Type  Inodes    IUsed   IFree     IUse%  Mounted  on
/dev/mapper/RHEL-Home  xfs   52428800  483742  51945058  1%     /home    

== Storage device behind directory [ /home ]: ==
/dev/mapper/RHEL-Home

== 5 Largest Files on [ /home ]: ==
21G     /home/user/VirtualMachines/rhel8.qcow2
618M	/home/user/ceph-common.tar
500M	/home/user/scratch/bigFile
405M	/home/user/Downloads/working/backup.tar
281M	/home/user/.local/shareaaaaaaa1f.file

== 5 Largest Directories on [ /home ]: ==
45G	total
45G	/home
44G	/home/user
21G	/home/user/VirtualMachines
18G	/home/user/.local/share
18G	/home/user/.local

== 5 Largest Files on [ /home ] Older Than 30 Days: ==
21G     /home/user/VirtualMachines/rhel8.qcow2
618M	/home/user/ceph-common.tar
500M	/home/user/scratch/bigFile
405M	/home/user/Downloads/working/backup.tar
281M	/home/user/abc123.file

== 5 Largest Deleted Files on [ /home ] With Open Handles: ==
Size  COMMAND  File Handle          Filename
4MB   chrome   /proc/2728808/fd/14  /home/user/.config/foo.pma

== Elapsed Time: ==
0h:0m:30s

== Server Time at completion: ==
Wed Jan  4 13:53:38 EST 2023


#_# END REPORT

[Cheat sheet: Old Linux commands and their modern replacements ]

Use banderas para optimizar la salida

Este script, cuando se ejecuta sin argumentos, identifica el punto de montaje que contiene el directorio de trabajo actual. Luego, realizará un informe a partir del punto de montaje, identificando y enumerando los 20 archivos más grandes, los 20 directorios más grandes y luego los 20 archivos más grandes con más de 30 días.

Puede refinar aún más la salida con argumentos de línea de comando, que puede encontrar en documento (también disponible con --help Ordenar):

  • --format (o -f) [format]: El título del formato es html, bbcode (negrita), o ansi (para terminal y texto enriquecido).
  • --path (o -p) [path]: establezca la ruta, luego topdiskconsumer se ejecutará desde el punto de montaje principal del directorio.
  • --limit (o -l) [number]: limita el informe al archivo más grande por sección de informe. El valor predeterminado es 20.
  • --timeout (o -t) [duration]: establece un tiempo de espera para cada sección del informe. Tenga en cuenta que especificar un tiempo de espera puede generar resultados incompletos y engañosos.
  • --skipold (o -o): Saltar archivos con más de 30 días.
  • --skipdir (o -d): Omita el directorio más grande.
  • --skipmeta (o -m): Omite metadatos como bloques reservados, horas de inicio y finalización o duración.
  • --skipunlinked (o -u): Omitir archivos eliminados con identificadores abiertos.
  • --skipfiles (o -f): Omita el archivo más grande.

envolver

Me gusta usar la notación húngara para mis nombres de variables y funciones, prefiero grep -E Superar egrep (Esto es solo un elegante alias de script de shell para grep -E), y generalmente termino las declaraciones de Bash con punto y coma porque hace que mis scripts sean más fáciles de plegar y ajustar en una sola línea.

Puedes acceder al código fuente completo en mi repositorio.

[ Get the guide to installing applications on Linux. ]

LEER  Cree y ejecute archivos ".a" de Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba