获取ruby中的可用磁盘空间

使用ruby获取磁盘空间信息的最佳方法是什么。 我更喜欢纯ruby溶液。 如果不可能(即使有额外的gem),它也可以使用标准ubuntu桌面安装中可用的任何命令将信息解析为ruby。

您可以使用sys-filesystem gem(跨平台友好)

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

怎么样简单:

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

其中’/ dev / sda1’是路径,只需运行df即可确定

(Ruby)Daniel Berger在这个领域保留了很多gem 。 在那里找到:sys-cpu,sys-uptime,sys-uname,sys-proctable,sys-host,sys-admin,sys-filesystem。 他们是(AFAIK)多平台。

嗨,我为此创建了gem: https : //github.com/pr0d1r2/free_disk_space

你可以用它来:

gem’free_disk_space’#添加到Gemfile的行

内部代码使用方法:

FreeDiskSpace.terabytes( ‘/’)

FreeDiskSpace.gigabytes( ‘/’)

FreeDiskSpace.megabytes( ‘/’)

FreeDiskSpace.kilobytes( ‘/’)

FreeDiskSpace.bytes( ‘/’)

这是dkams答案的扩展,这是没有错的,但计算了一个驱动器的完整空间,以检查剩余的可用空间。驱动器上的免费空间替换kdams secodn行与以下内容:

 gb_available = stat.bytes_free / 1024 / 1024 / 1024 

这将返回Gigs中驱动器上的剩余可用空间。

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

在ubuntu下使用,检查调试大小,将可用大小作为输出。

类似于评论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 

这仅适用于Linux系统:如果您不介意调用shell,可以将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) 

无gem解决方案,以字节为单位回答:

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