ruby diskspace

Consigue espacio en disco disponible en ruby



diskspace (9)

¿Cuál es la mejor manera de obtener información del espacio en disco con ruby? Preferiría una solución de rubí puro. Si no es posible (incluso con gemas adicionales), también podría usar cualquier comando disponible en una instalación de escritorio de ubuntu estándar para analizar la información en ruby.


¿Qué tal simplemente?

spaceMb_i = `df -m /dev/sda1`.split(//b/)[24].to_i

donde ''/ dev / sda1'' es la ruta, determinada simplemente ejecutando df


(Ruby) Daniel Berger mantiene muchas gemas en este campo. Se puede encontrar allí: sys-cpu, sys-uptime, sys-uname, sys-proctable, sys-host, sys-admin, sys-filesystem. Son multiplataformas (AFAIK).


Esta es una extensión a la respuesta de dkams que no está mal, pero calculó el espacio completo de las unidades, para verificar el espacio disponible restante. Es el espacio GRATUITO en una unidad que sustituye a la línea de conexión de Kdams con lo siguiente:

gb_available = stat.bytes_free / 1024 / 1024 / 1024

Esto devolverá el espacio libre restante en tu disco en Gigs.


Esto funciona solo en un sistema Linux: si no te importa llamar al shell, puedes usar df para un sistema de archivos y analizar la salida con un Regexp:

fs_to_check = ''/boot'' df_output = `df #{fs_to_check}` disk_line = df_output.split(//n/)[1] disk_free_bytes = disk_line.match(/(.+)/s+(/d+)/s+(/d+)/s+(/d+)/s+/)[4].to_i disk_free_mbs = disk_free_bytes / 1024 puts(disk_free_mbs)


Hola, he creado una gema para eso: https://github.com/pr0d1r2/free_disk_space

Puedes usarlo por:

gema ''free_disk_space'' # agregar línea a Gemfile

Métodos de uso de código interno:

FreeDiskSpace.terabytes (''/'')

FreeDiskSpace.gigabytes (''/'')

FreeDiskSpace.megabytes (''/'')

FreeDiskSpace.kilobytes (''/'')

FreeDiskSpace.bytes (''/'')


Podría usar la gema sys-filesystem (compatible con plataformas cruzadas)

require ''sys/filesystem'' stat = Sys::Filesystem.stat("/") mb_available = stat.block_size * stat.blocks_available / 1024 / 1024


Similar a comentar el comentario de rogerdpack para obtener el espacio libre en GB / MB que puede intentar seguir

# Get free space in Gb in present partition gb_free = `df -BG .`.split[10].to_i** # Get free space in MB in /dev/sda1 partition mb_free = `df -BM /dev/sda1`.split[10].to_i** puts gb_free, mb_free


Una solución libre de gemas, contesta en bytes:

(File.exists?(''C://') ? `dir /-C`.match(/(/d+) bytes free/) : `df .`.match(/(/d+)/s*/d*%/)).captures[0].to_i


def check_disk_space system(''df -H | grep debug > ff'') ss = File.open(''ff'').read.split(//s+/) system(''rm ff'') "#{ss[3]}" end

Utilizado en ubuntu, para verificar el tamaño de los errores, poner el tamaño disponible como salida.