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 debe ser verificar que haya suficiente espacio. Sé que df informará sobre todos los sistemas de archivos, pero me preguntaba si había una manera de obtener el espacio libre solo para la partición en la que se encuentra el directorio de destino.
Editar: la respuesta que se me ocurrió
df $PWD | awk '/[0-9]%/{print $(NF-2)}'
Un poco 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 una línea
-P
bandera paradf
obtenerlo todo en una línea.du -hs .
para ver el espacio en disco en uso para el directorio actual.Respuestas:
Si:
para el directorio actual.
si desea consultar un directorio específico.
También es posible que desee verificar el
stat(1)
comando si su sistema lo tiene. Puede especificar formatos de salida para facilitar el análisis de su script. He aquí un pequeño ejemplo:fuente
-k
. (coreutils df tiene como valor predeterminado 1k bloques, por lo que está bastante seguro en Linux, pero si tiene coreutils, lo tienestat
, y eso es aún más seguro, no se requiere análisis).%a*%s
lugar de%a*%S
. No estoy seguro de si esto es una diferencia o un error tipográfico.%S
(en mayúscula) según la página de manual de RedHat. Sin%s != %S
embargo, no puedo encontrar un sistema de archivos donde en los pocos RedHats tengo acceso, así que no puedo verificar :-(df
comando: Informe el uso del espacio en disco del sistema de archivosdu
comando: Estimar el uso del espacio de archivosEscriba
df -h
odf -k
para enumerar el espacio libre en disco:O
du
muestra cuánto espacio están usando uno o más archivos o directorios:La
-s
opción resume el espacio que está usando un directorio y la-h
opción proporciona una salida legible por humanos .fuente
Creo que esto debería ser un comentario o una edición de la respuesta de ThinkingMedia en esta misma pregunta ( Verifique el espacio libre en el disco para la partición actual en bash ), pero no puedo comentar (no hay suficiente representante) y mi edición ha sido rechazada (motivo: "esto debe ser un comentario o una respuesta"). Así que, 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 arreglarlo.
El código
tiene un defecto sustancial: Sí, se producirá
50G
gratis como 50, pero también saldrá5.0M
gratis como 50 o3.4G
gratis como 34 o15K
gratis como 15.Para crear un script con el propósito de verificar una cierta cantidad de espacio libre en el disco, debe conocer la unidad con la que está comprobando. Elimínelo (como
sed
en el ejemplo anterior), los números ya no tienen sentido.Si realmente quiere que funcione, tendrá que hacer algo como:
También para un instalador
df -k $INSTALL_TARGET_DIRECTORY
podría tener más sentido quedf -k "$PWD"
. Finalmente, tenga en cuenta que la--output
bandera no está disponible en todas las versiones de df / linux.fuente
--output=avail
obtienes el tamaño en bytes de esta manera.
fuente
--output=avail
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 enviará un correo electrónico a la persona:
fuente
Para conocer el uso del directorio específico en GB o TB en Linux, el comando es,
df -h / dir / inner_dir /
df -sh / dir / inner_dir /
y para conocer el uso del directorio específico en bits en Linux, el comando es,
df-k / dir / inner_dir /
fuente
Escriba en el shell de comandos:
o
o
Mostrará la lista de espacios libres en disco para cada punto de montaje.
También puede mostrar / ver una sola columna.
Tipo:
Nota: Aquí 3 es el número de columna. Puede elegir qué columna necesita.
fuente