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.