Каков наилучший способ получить информацию о дисках с ruby. Я бы предпочел чисто рубиновый раствор. Если это невозможно (даже с дополнительными драгоценными камнями), он также может использовать любую команду, доступную в стандартной установке рабочего стола ubuntu, для анализа информации в рубине.
Получить доступное дисковое пространство в рубине
Ответ 1
Вы можете использовать sys-filesystem gem (кросс-платформенная)
require 'sys/filesystem'
stat = Sys::Filesystem.stat("/")
mb_available = stat.block_size * stat.blocks_available / 1024 / 1024
Ответ 2
Как насчет просто:
spaceMb_i = `df -m /dev/sda1`.split(/\b/)[24].to_i
где '/dev/sda1' - это путь, определяемый простым запуском df
Ответ 3
(Ruby) Daniel Berger поддерживает много драгоценных камней в этой области. Здесь можно найти: sys-cpu, sys-uptime, sys-uname, sys-proctable, sys-host, sys-admin, sys-filesystem. Они (мульти-платформа AFAIK).
Ответ 4
Привет, я создал камень для этого: https://github.com/pr0d1r2/free_disk_space
Вы можете использовать его:
gem 'free_disk_space' # добавить строку в Gemfile
Использование методов внутреннего кода:
FreeDiskSpace.terabytes( '/')
FreeDiskSpace.gigabytes( '/')
FreeDiskSpace.megabytes( '/')
FreeDiskSpace.kilobytes( '/')
FreeDiskSpace.bytes( '/')
Ответ 5
Это расширение ответа dkams, которое не является неправильным, но рассчитывает полное пространство одного диска, чтобы проверить оставшееся пригодное для использования. То есть БЕСПЛАТНОЕ место на диске заменяет строку kdams secodn следующим образом:
gb_available = stat.bytes_free / 1024 / 1024 / 1024
Это вернет оставшееся свободное место на вашем диске в концертах.
Ответ 6
def check_disk_space
system('df -H | grep debug > ff')
ss = File.open('ff').read.split(/\s+/)
system('rm ff')
"#{ss[3]}"
end
Используемый под ubuntu, чтобы проверить размер отладок, поместите доступный размер в качестве вывода.
Ответ 7
Как комментарий комментарий rogerdpack чтобы получить свободное пространство в GB/MB, вы можете попробовать следовать
# 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
Ответ 8
Это работает только в системе Linux: если вы не против вызова оболочки, вы можете использовать df
для файловой системы и проанализировать вывод с помощью 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)
Ответ 9
Я считаю, что это более надежно.
filesystem = "/dev/sda1"
free_megabytes = 'LANG=C df -m #{filesystem}'.split("\n").map do |line|
line.split.first(4)
end.transpose.to_h["Available"]&.to_i
puts(free_megabytes)
Ответ 10
Бесплатное решение без камней, ответ в байтах:
(File.exists?('C:\\') ? `dir /-C`.match(/(\d+) bytes free/) : `df .`.match(/(\d+)\s*\d*%/)).captures[0].to_i