2010-12-22 46 views
19

用ruby獲取磁盤空間信息的最佳方式是什麼? 我寧願純粹的紅寶石解決方案。如果不可能(即使有更多的寶石),它也可以使用標準ubuntu桌面安裝中可用的任何命令將信息解析爲ruby。在ruby中獲取可用磁盤空間

+0

? ,如果窗口有一個問題,http:// stackoverflow。/ dev/3258518/ruby​​-get-available-disk-drives – 2010-12-22 11:33:22

+0

在ubuntu下linux – 2010-12-22 11:39:33

回答

29

您可以使用sys-filesystem寶石(跨平臺型)

require 'sys/filesystem' 

stat = Sys::Filesystem.stat("/") 
mb_available = stat.block_size * stat.blocks_available/1024/1024 
確定
6

如何簡單:

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

其中 '的/ dev/sda1的' 爲路徑,只需運行DF

+0

由於某種原因(拆分?)對我沒有效果,但是這樣做了`bytes_free = \`df -B1 .``split [10] .to_i` – rogerdpack 2015-10-23 22:43:14

4

(Ruby)Daniel Berger在此字段中維護a lot of gems。在那裏可以找到:sys-cpu,sys-uptime,sys-uname,sys-proctable,sys-host,sys-admin,sys-filesystem。他們是(AFAIK)多平臺。

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

在ubuntu下用來檢查調試大小,把可用大小作爲輸出。

2

嗨,我已經創建了寶石爲:https://github.com/pr0d1r2/free_disk_space

您可以使用它:

寶石 'FREE_DISK_SPACE' #添加行的Gemfile

裏面的代碼使用方法:

FreeDiskSpace ('/')

FreeDiskSpace.gigabytes('/')

FreeDiskSpace.megabytes( '/')

FreeDiskSpace.kilobytes( '/')

FreeDiskSpace.bytes( '/')

+2

「雖然此鏈接可能回答問題,但最好在此處包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – zero323 2013-11-16 16:28:12

3

這是爲了dkams答案是沒有錯的延伸,但計算出驅動器的完整空間,以檢查剩餘的可用.ie在驅動器替代kdams secodn線的自由空間有以下:

mb_available = stat.bytes_free/1024/1024/1024 

這將返回在演出硬盤上的剩餘空間。

-2

免費的寶石解,答案在字節:

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

評論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 
1

這僅適用於一個Linux系統:如果你不介意調用shell,你可以使用df作爲文件系統並用正則表達式解析輸出:

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) 
在windows或linux下的
相關問題