verificar ver total tamaño para ocupado espacio duro disco comando linux bash

para - ver tamaño total de disco en linux



Verifique el espacio libre en disco para la partición actual en bash (8)

  1. Comando df : informe el uso del espacio de disco del sistema de archivos
  2. du command: Estimar el uso del espacio de archivos

Escriba df -h o df -k para listar el espacio libre en el disco:

$ df -h

O

$ df -k

du muestra cuánto espacio está usando uno o más archivos o directorios.

$ du -sh

-s opción -s resume el espacio que está usando un directorio y la opción -h proporciona salida legible para humanos .

Estoy escribiendo un instalador en bash. El usuario irá al directorio de destino y ejecutará el script de instalación, por lo que la primera acción debería ser verificar que haya suficiente espacio. Sé que df informará todos los sistemas de archivos, pero me preguntaba si había una forma de obtener el espacio libre solo para la partición en la que está el directorio de destino.

Editar - la respuesta que se me ocurrió

df $PWD | awk ''/[0-9]%/{print $(NF-2)}''

Ligeramente extraño porque df parece formatear su salida para ajustarse al terminal, por lo que con un nombre de punto de montaje largo, la salida se desplaza hacia abajo en una línea


Creo que esto debería ser un comentario o una edición de la respuesta de ThinkingMedia a esta pregunta ( Revise el espacio libre en disco para la partición actual en bash ), pero no puedo comentar (no hay suficiente repetición) y mi edición ha sido rechazada (razón: "esto debería ser un comentario o una respuesta"). Entonces, por favor, poderes del universo SO, no me maldigan por repetir y arreglar la "respuesta" de otra persona. ¡Pero alguien en Internet estaba equivocado! ™ y no me dejaron solucionarlo.

El código

df --output=avail -h "$PWD" | sed ''1d;s/[^0-9]//g''

tiene un defecto sustancial: sí, dará como resultado 50G libre como 50 - pero también dará como resultado 5.0M libre como 50 o 3.4G libre como 34 o 15K libre como 15.

Para crear un script con el fin de verificar una cierta cantidad de espacio libre en el disco, debe conocer la unidad con la que está comprobando. Quítelo (como lo hace sed en el ejemplo anterior) los números ya no tienen sentido.

Si realmente quieres que funcione, tendrás que hacer algo como:

FREE=`df -k --output=avail "$PWD" | tail -n1` # df -k not df -h if [[ $FREE -lt 10485760 ]]; then # 10G = 10*1024*1024k # less than 10GBs free! fi;

También para un instalador a df -k $INSTALL_TARGET_DIRECTORY podría tener más sentido que df -k "$PWD" . Finalmente, tenga en cuenta que el indicador --output no está disponible en todas las versiones de df / linux.


Escriba en el shell de comandos:

df -h

o

df -m

o

df -k

Mostrará la lista de espacios de disco libres para cada punto de montaje.

Puede mostrar / ver una sola columna también.

Tipo:

df -m |awk ''{print $3}''

Nota: Aquí 3 es el número de columna. Puede elegir la columna que necesita.


Para obtener el espacio libre en disco actual en formato legible para humanos con letras. Lo siguiente dará como resultado el espacio libre para la partición actual, soltar el encabezado y pelar letras.

df --output=avail -h "$PWD" | sed ''1d;s/[^0-9]//g''

Salidas 50G libres como 50 .

Para hacer que esto sea parte de una condición de espacio libre en disco en script bash.

FREE=`df --output=avail -h "$PWD" | sed ''1d;s/[^0-9]//g''` if [[ $FREE -lt 10 ]]; then # less than 10GBs free! fi;


Para saber el uso del directorio específico en GB o TB en Linux, el comando es:

df -h / dir / inner_dir /

or

df -sh / dir / inner_dir /

y para saber el uso del directorio específico en bits en Linux, el comando es,

df-k / dir / inner_dir /


Sí:

df -k .

para el directorio actual.

df -k /some/dir

si quieres consultar un directorio específico.

También es posible que desee verificar el comando stat(1) si su sistema lo tiene. Puede especificar formatos de salida para facilitar el análisis de su secuencia de comandos. Aquí hay un pequeño ejemplo:

$ echo $(($(stat -f --format="%a*%S" .)))


Un ejemplo completo para alguien que quiera usar esto para monitorear un punto de montaje en un servidor. Este ejemplo verificará si / var / spool está por debajo de 5G y envía un correo electrónico a la persona:

#!/bin/bash # ----------------------------------------------------------------------------------------- # SUMMARY: Check if MOUNT is under certain quota, mail us if this is the case # DETAILS: If under 5G we have it alert us via email. blah blah # ----------------------------------------------------------------------------------------- # CRON: 0 0,4,8,12,16 * * * /var/www/httpd-config/server_scripts/clear_root_spool_log.bash MOUNTP=/var/spool # mount drive to check LIMITSIZE=5485760 # 5G = 10*1024*1024k # limit size in GB (FLOOR QUOTA) FREE=$(df -k --output=avail "$MOUNTP" | tail -n1) # df -k not df -h LOG=/tmp/log-$(basename ${0}).log MAILCMD=mail EMAILIDS="[email protected]" MAILMESSAGE=/tmp/tmp-$(basename ${0}) # ----------------------------------------------------------------------------------------- function email_on_failure(){ sMess="$1" echo "" >$MAILMESSAGE echo "Hostname: $(hostname)" >>$MAILMESSAGE echo "Date & Time: $(date)" >>$MAILMESSAGE # Email letter formation here: echo -e "/n[ $(date +%Y%m%d_%H%M%S%Z) ] Current Status:/n/n" >>$MAILMESSAGE cat $sMess >>$MAILMESSAGE echo "" >>$MAILMESSAGE echo "*** This email generated by $(basename $0) shell script ***" >>$MAILMESSAGE echo "*** Please don''t reply this email, this is just notification email ***" >>$MAILMESSAGE # sending email (need to have an email client set up or sendmail) $MAILCMD -s "Urgent MAIL Alert For $(hostname) AWS Server" "$EMAILIDS" < $MAILMESSAGE [[ -f $MAILMESSAGE ]] && rm -f $MAILMESSAGE } # ----------------------------------------------------------------------------------------- if [[ $FREE -lt $LIMITSIZE ]]; then echo "Writing to $LOG" echo "MAIL ERROR: Less than $((($FREE/1000))) MB free (QUOTA) on $MOUNTP!" | tee ${LOG} echo -e "/nPotential Files To Delete:" | tee -a ${LOG} find $MOUNTP -xdev -type f -size +500M -exec du -sh {} '';'' | sort -rh | head -n20 | tee -a ${LOG} email_on_failure ${LOG} else echo "Currently $(((($FREE-$LIMITSIZE)/1000))) MB of QUOTA available of on $MOUNTP. " fi


df --output=avail -B 1 "$PWD" |tail -n 1

obtienes el tamaño en bytes de esta manera.