GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Los 15 comandos Linux más útiles para mantener sistemas de ficheros

31 comentarios

Una de las tareas más frecuentes y tediosas del administrador de sistemas es evitar que se llenen los sistemas de ficheros de una máquina, pues cuando un servidor se queda sin espacio las consecuencias son impredecibles. Dependiendo de cómo esté estructurado el sistema de ficheros raíz de dicha máquina y de la división entre distintas particiones o volúmenes que hayamos establecido, dichas consecuencias serán más o menos graves, pero en cualquier caso indeseables.

En cualquier caso siempre es mejor prevenir que curar, por lo que conviene utilizar herramientas que realicen la rotación automática de logs como logrotate y scripts personalizados que vigilen y lleven a cabo acciones periódicas de vaciado para evitar que se nos llenen nuestros sistemas de ficheros. No obstante, aún usando estos métodos de prevención serán muchas las ocasiones en que tendremos que actuar manualmente para solucionar problemas que seguro se producirán.

A continuación recojo una recopilación de los comandos Linux que a mi me resultan más útiles en el día a día para liberar espacio y mantener desde el intérprete de comandos mis sistemas de ficheros en un estado de salud óptimo.

1. Comprobar el espacio libre disponible

Para saber el espacio libre del que disponemos en todos los sistemas de ficheros de nuestra máquina ejecutaremos el siguiente comando:

~$ df -h
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/sdb5        3,9G   842M  3,0G  22% /
udev             2,0G   4,0K  2,0G   1% /dev
tmpfs            791M   956K  790M   1% /run
none             5,0M      0  5,0M   0% /run/lock
none             2,0G    72M  1,9G   4% /run/shm
/dev/sdb1        118M    91M   28M  77% /boot
/dev/sdb10        31G   6,8G   24G  23% /home
/dev/sdb6         23G    12G   12G  52% /usr
/dev/sdb7        9,6G   1,5G  8,1G  16% /var
/dev/sdb8        2,9G    62M  2,8G   3% /tmp
/dev/sdb11       102G    11G   91G  11% /vmware
/dev/sda1        230G    93G  125G  43% /var/datos

Para un directorio concreto:

~$ df -h /home
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/sdb10        31G   6,8G   24G  23% /home

Para mostrar los sistemas de ficheros por orden de ocupación y saber así cuales son los que están más llenos:

~$ df -h | awk '{print $5 " " $6}' | sort -n | tail -5
22% /
23% /home
43% /var/datos
52% /usr
77% /boot

2. Calcular el tamaño ocupado por un directorio

El parámetro -h indica que se muestre el tamaño del modo más amigable posible, ya sea en Kilobytes, Megabytes, Gigabytes o Terabytes.

~# du -h -s /var/log
9,6M	/var/log

3. Eliminar vs vaciar ficheros

Para eliminar ficheros con el fin de liberar espacio emplearemos habitualmente el comando rm. Sin embargo, es muy habitual que no nos podamos permitir eliminar un fichero por estar siendo utilizado en ese momento por una aplicación, lo cual es de lo más habitual con ficheros de log en sistemas en producción que no pueden parar. Eliminarlos directamente puede tener consecuencias nefastas, como el bloqueo de la propia aplicación que los está utilizando, o más leves pero también indeseables, como que se interrumpa el volcado de datos a estos ficheros y dejen de ser útiles.


Error: Your Requested widget " ai_widget-6" is not in the widget list.
  • [do_widget_area above-nav-left]
    • [do_widget_area above-nav-right]
      • [do_widget_area footer-1]
        • [do_widget id="wpp-4"]
      • [do_widget_area footer-2]
        • [do_widget id="recent-posts-4"]
      • [do_widget_area footer-3]
        • [do_widget id="recent-comments-3"]
      • [do_widget_area footer-4]
        • [do_widget id="archives-4"]
      • [do_widget_area logo-bar]
        • [do_widget id="oxywidgetwpml-3"]
      • [do_widget_area menu-bar]
        • [do_widget id="search-3"]
      • [do_widget_area sidebar]
        • [do_widget id="search-4"]
        • [do_widget id="ai_widget-2"]
        • [do_widget id="categories-5"]
        • [do_widget id="ai_widget-3"]
        • [do_widget id="ai_widget-4"]
        • [do_widget id="ai_widget-5"]
      • [do_widget_area sub-footer-1]
        • [do_widget id="text-4"]
      • [do_widget_area sub-footer-2]
        • [do_widget_area sub-footer-3]
          • [do_widget_area sub-footer-4]
            • [do_widget_area upper-footer-1]
              • [do_widget id="search-2"]
              • [do_widget id="recent-posts-2"]
              • [do_widget id="recent-comments-2"]
              • [do_widget id="archives-2"]
              • [do_widget id="categories-2"]
              • [do_widget id="meta-2"]
            • [do_widget_area upper-footer-2]
              • [do_widget_area upper-footer-3]
                • [do_widget_area upper-footer-4]
                  • [do_widget_area widgets_for_shortcodes]
                    • [do_widget id="search-5"]
                    • [do_widget id="ai_widget-6"]
                  • [do_widget_area wp_inactive_widgets]
                    • [do_widget id="wpp-2"]
                    • [do_widget id="text-1"]
                    • [do_widget id="recent-posts-3"]
                    • [do_widget id="categories-3"]
                    • [do_widget id="archives-3"]
                    • [do_widget id="icl_lang_sel_widget-3"]

                  Para no alterar el funcionamiento de una aplicación y conseguir nuestro objetivo de liberar espacio vaciaremos los ficheros en lugar de eliminarlos:

                  ~# >/var/log/syslog
                  

                  Tras esto el fichero quedará con un tamaño de 0 bytes.

                  Si necesitamos vaciar múltiples ficheros a la vez con un único comando:

                  ~# for I in `ls "https://cdn.daniloaz.com/var/log/*.log"`;do >"$I";done
                  

                  4. Contar el número de ficheros en un directorio

                  ~# ls -l /var/log | wc -l
                  80
                  

                  5. Obtener los ficheros que más pesan de un filesystem

                  Este comando es útil cuando queremos liberar espacio, pues muestra los ficheros que tienen un mayor tamaño dentro de un directorio incluyendo sus subdirectorios, siendo el último de la lista el más pesado.

                  ~# du -k /var/log | sort -n | tail -5
                  516	/var/log/apache2
                  5256	/var/log/exim4
                  12884	/var/log/installer/cdebconf
                  13504	/var/log/installer
                  21456	/var/log
                  

                  El tamaño de los ficheros se debe mostrar Kilobytes (parámetro -k). Es necesario utilizar este parámetro en lugar de -h porque si no el comando sort -n no ordenaría la lista del modo que nosotros esperamos.

                  Es importante limitar el número de ficheros que queremos mostrar con tail -X, siendo X dicho número, pues si el directorio en cuestión tiene cientos o miles de ficheros, la salida del comando se puede demorar demasiado por la sobrecarga de entrada/salida a la que someteremos a nuestro terminal, sobre todo si nos estamos conectando de forma remota via telnet o ssh a un servidor y la conexión no es muy rápida.


                  Error: Your Requested widget " ai_widget-6" is not in the widget list.
                  • [do_widget_area above-nav-left]
                    • [do_widget_area above-nav-right]
                      • [do_widget_area footer-1]
                        • [do_widget id="wpp-4"]
                      • [do_widget_area footer-2]
                        • [do_widget id="recent-posts-4"]
                      • [do_widget_area footer-3]
                        • [do_widget id="recent-comments-3"]
                      • [do_widget_area footer-4]
                        • [do_widget id="archives-4"]
                      • [do_widget_area logo-bar]
                        • [do_widget id="oxywidgetwpml-3"]
                      • [do_widget_area menu-bar]
                        • [do_widget id="search-3"]
                      • [do_widget_area sidebar]
                        • [do_widget id="search-4"]
                        • [do_widget id="ai_widget-2"]
                        • [do_widget id="categories-5"]
                        • [do_widget id="ai_widget-3"]
                        • [do_widget id="ai_widget-4"]
                        • [do_widget id="ai_widget-5"]
                      • [do_widget_area sub-footer-1]
                        • [do_widget id="text-4"]
                      • [do_widget_area sub-footer-2]
                        • [do_widget_area sub-footer-3]
                          • [do_widget_area sub-footer-4]
                            • [do_widget_area upper-footer-1]
                              • [do_widget id="search-2"]
                              • [do_widget id="recent-posts-2"]
                              • [do_widget id="recent-comments-2"]
                              • [do_widget id="archives-2"]
                              • [do_widget id="categories-2"]
                              • [do_widget id="meta-2"]
                            • [do_widget_area upper-footer-2]
                              • [do_widget_area upper-footer-3]
                                • [do_widget_area upper-footer-4]
                                  • [do_widget_area widgets_for_shortcodes]
                                    • [do_widget id="search-5"]
                                    • [do_widget id="ai_widget-6"]
                                  • [do_widget_area wp_inactive_widgets]
                                    • [do_widget id="wpp-2"]
                                    • [do_widget id="text-1"]
                                    • [do_widget id="recent-posts-3"]
                                    • [do_widget id="categories-3"]
                                    • [do_widget id="archives-3"]
                                    • [do_widget id="icl_lang_sel_widget-3"]

                                  6. Listar los ficheros más pesados de un directorio

                                  Similar al anterior, pero en este caso sólo se muestran los fichero del propio directorio, sin incluir subdirectorios.

                                  ~# ls -lSr | tail -5
                                  -rw-r----- 1 syslog      adm   118616 sep 29 22:05 auth.log
                                  -rw-r--r-- 1 root        root  149012 sep  9 17:12 udev
                                  -rw-r--r-- 1 root        root  160128 ago  4 19:27 faillog
                                  -rw-r----- 1 syslog      adm   499400 sep 28 06:25 auth.log.1
                                  -rw-rw-r-- 1 root        utmp 1461168 sep 29 21:54 lastlog
                                  

                                  Si elimináramos el parámetro -r obtendríamos los ficheros más ligeros en lugar de los de mayor tamaño.

                                  7. Calcular el espacio ocupado por ciertos ficheros

                                  Por ejemplo, si queremos obtener el espacio total ocupado sólo por los ficheros con extensión .log en un directorio, usaremos el siguiente comando:

                                  ~# du -ch /var/log/*.log | grep total
                                  468K	total
                                  

                                  8. Encontrar ficheros de gran tamaño fijando límites

                                  Por ejemplo, aquellos que tengan un tamaño de más de 100 MB, o aquellos que ocupen entre 100 MB y 1 GB:

                                  ~$ find . -type f -size +100M -ls
                                  
                                  ~$ find . -type f -size +100M -size -1G -ls
                                  

                                  9. Listar los ficheros modificados más recientemente

                                  ~# ls -larth /var/log | tail -5
                                  drwxr-xr-x 20 root              root     4,2K sep 30 12:27 .
                                  -rw-rw-r--  1 root              utmp      11K sep 30 13:03 wtmp
                                  -rw-r-----  1 syslog            adm       13K sep 30 13:03 syslog
                                  -rw-r-----  1 syslog            adm       13K sep 30 13:03 kern.log
                                  -rw-r-----  1 syslog            adm      1000 sep 30 13:03 auth.log
                                  

                                  El parámetro -a indica que también se muestren los ficheros ocultos.

                                  10. Encontrar ficheros antiguos (I)

                                  Muchas veces necesitamos saber los ficheros modificados dentro de un intervalo de tiempo dado. En el siguiente ejemplo, localizamos los ficheros que tengan una antigüedad de más de 90 días con el fin de encontrar ficheros antiguos que ya no sirvan y puedan eliminarse para liberar espacio.

                                  ~# find /var/log -mtime +90 -ls
                                  
                                  ~# find /var/log -mtime +90 -ls -exec rm {} \;
                                  

                                  El primer comando sólo localiza los ficheros, el segundo además los elimina.

                                  11. Encontrar ficheros antiguos (II)

                                  Igual que el anterior, pero en este caso también se consideran los ficheros que hayan sido accedidos dentro del intervalo de tiempo especificado, sin que hayan tenido por qué ser modificados.

                                  ~# find /var/log -atime +90 -ls
                                  

                                  12. Encontrar ficheros vacíos

                                  El siguiente comando nos permite encontrar en el directorio actual ficheros con un tamaño de 0 bytes, es decir, vacíos. Esto es útil ante situaciones anómalas en las que se generan este tipo de ficheros, por ejemplo tras llenarse un filesystem o por el comportamiento anómalo de una aplicación. Ante estos escenarios se hace necesaria una limpieza, pues aunque estos ficheros no ocupen espacio en disco sí que pueden llegar a consumir todos los inodos disponibles de un sistema de ficheros si se crean de forma masiva e impedir así que se puedan crear nuevos ficheros.

                                  ~$ find . -type f -size 0b -ls
                                  

                                  O también:

                                  ~$ find . -type f -empty -ls
                                  

                                  Para saber el número de inodos libres del que disponen los distintos sistemas de ficheros de una máquina usaremos el comando df -i.

                                  13. Empaquetar y comprimir el contenido de un directorio

                                  A veces es útil empaquetar todos los ficheros de registro o de log de un directorio en un único fichero comprimido para conservar el estado de dicho directorio en un punto temporal determinado y poder eliminar o vaciar todos esos ficheros con el fin de liberar espacio.

                                  ~# tar -zcvf var_log.`date +%Y%m%d`.tar.gz /var/log/*.log
                                  

                                  El comando anterior comprime todos los ficheros de log en un único fichero comprimido con extensión tar.gz y con la fecha de hoy para que sea más fácil localizar los distintos puntos temporales en el futuro. Veamos cómo conseguir ahorrar espacio, pasando en este ejemplo de 468 MB a 35 MB:

                                  ~# du -ch /var/log/*.log | grep total
                                  468M	total
                                  ~# ls -lh var_log.20140930.tar.gz 
                                  -rw-r--r-- 1 root root 35M sep 30 13:36 var_log.20140930.tar.gz
                                  

                                  Tras esto podemos proceder a vaciar todos los ficheros de log como en el punto 3.

                                  14. Encontrar ficheros en la papelera de reciclaje

                                  Normalmente cuando enviamos algún fichero a la papelera de reciclaje éste simplemente se mueve a un directorio oculto de nuestra carpeta personal como por ejemplo ~/.local/share/Trash en Ubuntu. Sin embargo, hay aplicaciones específicas que utilizan sus propios directorios para almacenar la basura con un nombre que surge de la combinación de la palabra trash en mayúsculas o minúsculas con alguna secuencia de números, como por ejemplo .Trash001, .trash-002, .Trash_0003, etc.

                                  También cuando montamos sistemas de ficheros externos procedentes de un disco duro externo o una tarjeta SD, el sistema operativo del que procede ha podido guardar ficheros en la papelera, pero el nombre de ésta puede diferir de un sistema operativo a otro y ser distinto del que utiliza nuestra distribución Linux y por tanto no reconocerla. En estos casos nos encontramos con que aunque vaciemos la papelera de reciclaje seguiremos teniendo una gran cantidad de espacio ocupado en nuestro dispositivo sin razón aparente.

                                  Pues bien, la solución pasa por buscar todos los subdirectorios *trash* que haya en nuestro sistema sin diferenciar entre mayúsculas o minúsculas y analizar su contenido para ver si podemos deshacernos de él (no siempre será basura todo lo que encontremos). El comando necesario sería el siguiente y su ejecución puede llevar mucho tiempo, por lo que quizás queramos restringirlo a un sistema de ficheros o directorio concreto:

                                  ~$ find / -iname "*trash*" -ls
                                  

                                  15. Encontrar ficheros repetidos

                                  Por último, ahí va un enorme comando que nos permitirá encontrar y eliminar los ficheros duplicados que haya en un directorio para evitar redundancias innecesarias que pueden ser muy costosas en términos de espacio consumido.

                                  ~$ find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate | cut -f3-100 -d ' ' | tr '\n.' '\t.' | sed 's/\t\t/\n/g' | cut -f2-100 | tr '\t' '\n' | perl -pe 's/([ (){}-])/\\$1/g' | perl -pe 's/'\''/\\'\''/g' | xargs -pr rm -v
                                  

                                  ¿Y a ti? ¿Se te ocurren más comandos útiles que utilices habitualmente para mantener tus filesystems desocupados?

                                   

                                  Sobre el autor

                                  Daniel López Azaña
                                  Arquitecto de soluciones Cloud AWS & Linux Sysadmin Freelance

                                  Emprendedor, generador de ideas y mente inquieta. Apasionado de las nuevas tecnologías, especialmente de los sistemas Linux y del software libre. Me gusta escribir además sobre actualidad tecnológica, Cloud Computing, AWSi, DevOps, DevSecOps, seguridad, desarrollo web y programación, SEO, ciencia, innovación, emprendimiento, etc.

                                  DanielLos 15 comandos Linux más útiles para mantener sistemas de ficheros

                                  Artículos relacionados

                                  31 comentarios

                                  Unirte a la conversación
                                  • tanui - 19/05/2015 responder

                                    ¿Como sería esto?
                                    buscar desde un directorio D recursivamente, todos los archivos con extension *.x que contentan la cadena de caracteres»abc», y que no estén dentro de directorios que se llamen «bin»

                                    Sólo sé esto:
                                    find . -name «*.x» | xargs find «abc»

                                    No sé como añadir lo de quitar los archivos que estén en el directorio «bin».
                                    También me gustaría saber cómo eliminar del resultado de búsqueda toda la info no deseada para mí, como por ejemplo los permisos, usuario, grupo, etc. y dejar solamente el path del fichero que busco.

                                    Gracias de antemano por la ayuda!

                                    Daniel - 09/01/2017 responder

                                    Te faltaría añadir el parámetro -path «*bin*» para no buscar en subdirectorios cuyo nombre contenga la cadena bin. Puedes también evitar el comando xargs poniendo simplemente find . -name «*abc*.x». El comando find no muestra por defecto información de permisos, usuario, grupo, etc. a menos que se añada el parámetro -ls, por lo que simplemente evitando su uso eliminarías toda esa información del resultado.

                                  • JOSE VARELA - 16/06/2015 responder

                                    muchas gracias son muy utiles

                                  • Eduardo - 19/08/2015 responder

                                    Hola,
                                    Tengo un problema con un bedian 3.1 y es que en el FS de var/ me muestra una lectura que no corresponde.

                                    /dev/cciss/c0d0p2 ext3 43G 40G 100M 100% /var

                                    Dice un 100% ocupado, pero según muestra la información, tendría disponible de 3G??
                                    me puedes ayudar con este problema.

                                    Saludos y gracias.

                                    Daniel - 09/01/2017 responder

                                    Los sistemas de ficheros tipo ext3 almacenan información de journaling que ocupa espacio adicional aparte de la información que almacenemos en él. Por eso una partición formateada con ext3 siempre tendrá menos espacio disponible para nuestro uso que el propio tamaño de la partición. Además, podría ser que adicionalmente hubiera ficheros o restos de ellos en el directorio lost+found recuperados tras una revisión mediante la herramienta fsck.

                                  • Carlos Muñoz - 01/01/2017 responder

                                    Buen día, porque mi archivo syslog en /var/log se llena muy rápido de tamaño….?

                                    Daniel - 09/01/2017 responder

                                    El archivo /var/log/syslog recibe los mensajes de error, alerta, información, etc. sobre eventos del sistema. Puede estar llenándose demasiado de forma justificada si el sistema presenta alguna anomalía, o puede que alguna aplicación esté vertiendo demasiados mensajes irrelevantes para un sistema en producción. En el primer caso habría que solucionar el problema de raíz que esté ocurriendo, y el segundo se puede evitar o mitigar ajustando el fichero /etc/syslog.conf para que no se muestren mensajes tipo notice o info, por ejemplo.

                                    Carlos - 05/04/2017 responder

                                    Busco el archivo syslog.conf en el subdirectorio /etc y no aparece, el parecido que esta en la carpeta es sysctl.conf

                                    Daniel - 10/03/2021 responder

                                    Dependiendo de la distribución, puede ser también /etc/rsyslog.conf.

                                    Mario Holod - 19/05/2018 responder

                                    usa este Comando: «>/var/log/syslog» el archivo quedara existente pero se limpiara totalmente. Mas fácil imposible, pero no esta demas que edites a tu conveniencia /etc/syslog.conf

                                  • ROMSAT - 29/01/2017 responder

                                    Hola Daniel, te felicito un post muy bueno.
                                    Existe una utilidad de Python llamada «pydf» que es una excelente alternativa al conocido «df». Se instala haciendo: sudo apt install pydf
                                    Que muestra de forma algo más visual el espacio disponible en cada punto de montaje, usando colores y gráficos de barras dentro de la terminal.
                                    $ pydf (da información básica)
                                    $ pydf -a (qué sistema de archivos no contiene ningún bloque)
                                    Y otros parámetros típicos son: -k (en Kilobytes) -m (en Megabytes) -g (en Gigabytes)
                                    Es todo. Un saludo desde Málaga.

                                  • antonio - 15/04/2017 responder

                                    Muchas gracias por compartir la info, me sirvió bastante! (Y)

                                  • Dajhan Cendales - 02/04/2018 responder

                                    Muchas Gracias me sirvieron demasiado los comandos, me salvaron

                                  • Ever Alfonso Santamaría - 02/10/2018 responder

                                    Buen día.
                                    El servidor Elastix de la empresa presenta el suguiente error «Reload failed because retrieve_conf encountered an error: 126» hemos revisado y extraido la información del disco y aun continua el error. Que puede ser el error??
                                    Agradezco su ayuda.

                                  • Luis - 03/10/2018 responder

                                    Hola tengo una duda, en la parte de «capacidad total de los sistemas de archivos» lo muestra en rojo y al 100%, esto puede afectar los procesos de mi ERP instalado en el servidor centos 6.7
                                    Y si es así como puedo reducir el uso de este.
                                    Saludos.

                                    Daniel - 27/10/2018 responder

                                    Efectivamente, un sistema de archivos al 100% impide nuevas escrituras, lo cual puede provocar todo tipo de efectos inesperados e indeseables sobre el funcionamiento del sistema. Si sigues mis recomendaciones de particionamiento en http://www.daniloaz.com/es/la-importancia-de-particionar-correctamente-un-disco-en-linux/ podrás acotar el impacto sobre el servidor y reducirlo a un mal funcionamiento de una aplicación o aplicaciones específicas. En cualquier caso, cualquier solución pasa únicamente por borrar ficheros que no sean necesarios, o aumentar el tamaño de la partición/volumen que se ha llenado al 100%.

                                    Guille - 02/04/2019 responder

                                    Tras varias actualizaciones del sistema, unos ficheros que ocupan mucho y podrías borrar son los kernel antiguos, en /boot podrías ver y borrar unos cuantos kernel pero cuidado con no borrar el último. Cada kernel tiene varios ficheros parejos con la misma numeración.

                                  • Miller leonardo - 02/02/2019 responder

                                    Hola Daniel como estas?
                                    Me gustaria instalar en mi centos software de monitoreo para que cada ves que los.discos se llenen genere una alerta via correo, como lo instalo y la configuracion porfavor necesito tu ayuda urgente.
                                    Gracias

                                  • Daniel - 10/02/2019 responder

                                    Hay distintos sistemas de monitorización open source que permiten hacer esto, como Prometheus, Influxdb, Zabbix, Nagios, etc., y también de pago, como Datadog, Dynatrace, etc. Pero si sólo quieres monitorizar de forma sencilla la ocupación de tus discos y enviar un correo de notificación, puedes usar una solución más simple, como Monit (https://mmonit.com/monit/), o un sencillo script como este, que es mejorable, pero que te servirá para salir del paso:

                                    #!/bin/bash

                                    threshold=»90″

                                    i=1
                                    result=`df -kh |grep -v «Filesystem» | awk ‘{ print $5 }’ | sed ‘s/%//g’`
                                    for percent in $result; do
                                    if ((percent > threshold));then
                                    partition=`df -kh | head -$i | tail -1| awk ‘{print $1}’`
                                    filesystem=`df -kh | head -$i | tail -1| awk ‘{print $6}’`
                                    echo «$partition mounted at $filesystem is ${percent}% full»
                                    echo «$partition mounted at $filesystem is ${percent}% full» | swaks –to info@example.com –from «sys@example.com» –server localhost -p 25
                                    fi
                                    let i=$i+1
                                    done

                                  • miguel - 28/05/2019 responder

                                    Hola!
                                    me veo con en la necesidad de por fechas anteriores a X tiempo, más de 25 días por ejemplo, comprimir unos ficheros de logs, sino me quedo sin inodos. Estoy intentando combinar las opciones de find, algo así:
                                    find ./ -iname ‘*.log.*’ -type f -mtime +25 -exec tar cvzf access_comprimir.tar.gz {} \;
                                    ¿esto no funciona, alguna idea para hacer esto?
                                    Muchas gracias, una entrada muy buena y útil.

                                    Daniel - 28/05/2019 responder

                                    Efectivamente no funciona, porque ejecutas el tar una vez por cada fichero que encuentra el find, machacando el contenido anterior. Por tanto al final tienes un fichero tar con un único fichero (el último) en lugar de empaquetarlos todos. Lo que pretendes conseguir lo puedes hacer con el siguiente comando:

                                    find ./ -iname ‘*.log.*’ -type f -mtime +25 -print0 | xargs -0 tar cvzf access_comprimir.tar.gz

                                  • miguel - 28/05/2019 responder

                                    Hola Daniel,
                                    En cuanto llegue mañana lo pruebo, tiene sentido lo que dices. Tenía en mente hacerlo con gzip como alternativa a tar porque no funciona exacamente igual.
                                    Algo más o menos así:
                                    find ./ -iname ‘*.log.*’ -type f -mtime +25 -print0 | gzip -d {}/;
                                    de esta manera en comprime el contenido de las llaves que es lo que ha localizado con find.
                                    Tengo que probar las dos opciones.
                                    Muchas gracias por responder y tan pronto. Volveré por tu blog 😉

                                  • Cesar - 01/08/2019 responder

                                    Buenos días,

                                    En primer lugar, felicitarte por el hilo y la ayuda que nos proporcionas.

                                    Necesito crear una tarea para el crontab que comprima en gzip todos los ficheros de logs anteriores a la fecha indicada, por ejemplo, 2 días.

                                    Entiendo que sería muy parecido a lo que dice miguel el día 28/05/2019 pero no logro que funcione correctamente.

                                    Me podrías ayudar.
                                    Gracias de antemano.

                                    Daniel - 18/08/2019 responder

                                    Necesitaría más detalles concretos de lo que quieres conseguir y del comando que estás usando para ello. No obstante, para mantener los ficheros de log de un sistema lo mejor es utilizar la herramienta logrotate para ir rotándolos (que se vayan eliminando los más antiguos períodicamente) y también para ir comprimiéndolos automáticamente y que ocupen menos espacio.

                                    cesar - 24/08/2019 responder

                                    algo asi seria correcto gracias por tu respuesta

                                  • guillermo - 07/08/2019 responder

                                    Hola Daniel, hoy al intentar encender mi macbook con mojave instalado al teclear la contrasena de logueo en el escritorio no termina el arranque y se queda asi de ahi no pasa, revisando con df -h veo que se quedo sin espacio el fs /dev 0bits , me podrias ayudar a poder depurarlo o que tendria que hacer para no perder mi informacion, por que ni entrando en la utilidad de discos en el modo seguro me deja hacer nada ni volver a reinstalar, solo eliminando o formateando el ssd…agradezco de antemano tu amable atencion

                                    Daniel - 18/08/2019 responder

                                    Hola Guillermo, no conozco en profundidad las particularidades de Mac OS X en cuanto a si es normal o no que el /dev esté al 100% de ocupación, pues /dev es un sistema de ficheros especial. Las causas de que no arranque tu macbook podrían ser otras, así que lo mejor es que revises los logs del sistema (/var/log/syslog y /var/log/messages), ya que en ellos se escribe información sobre la secuencia de arranque del sistema y los errores que se producen. Esa será la información más valiosa para saber qué está pasando.

                                  • eduardo - 05/08/2020 responder

                                    Excelente

                                  • daq - 10/03/2021 responder

                                    y entonces la linea de comando para eliminar??? la injormacion del file system??d

                                  • Gustavo - 02/10/2021 responder

                                    Me gustaria saber si existe , alguna forma , para poder monitorear un demonio .sh que no esta escribiendo logs? existe algun comando linux para ese monitoreo? y asi poder enviarme un correo de que el demonio dejo de escribir logs?

                                    Daniel - 19/11/2021 responder

                                    El siguiente comando devuelve el número de segundos que han pasado desde la última modificación de un fichero. Bastaría un pequeño script que compruebe cada x tiempo si el nº de segundos devuelto por dicho comando es superior a un determinado umbral, y si es así que envíe el correo de aviso:

                                    echo $(expr $(date +%s) – $(stat /var/log/wtmp -c %Y))

                                  Deja una respuesta

                                  Tu dirección de correo electrónico no será publicada.