27

ruby でディスク容量情報を取得する最良の方法は何ですか? 私は純粋なルビーソリューションを好みます。不可能な場合 (gem を追加しても)、標準の ubuntu デスクトップ インストールで使用可能な任意のコマンドを使用して、情報を解析して ruby​​ にすることもできます。

4

10 に答える 10

38

sys-filesystem gem (クロスプラットフォーム対応)を使用できます

require 'sys/filesystem'

stat = Sys::Filesystem.stat("/")
mb_available = stat.block_size * stat.blocks_available / 1024 / 1024
于 2011-05-28T11:44:54.383 に答える
7

簡単にどうですか:

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

ここで、「/dev/sda1」はパスであり、df を実行するだけで決定されます

于 2011-01-21T21:16:03.947 に答える
5

(Ruby) Daniel Berger は、この分野で多くの逸品を管理しています。そこにあるのは、sys-cpu、sys-uptime、sys-uname、sys-proctable、sys-host、sys-admin、sys-filesystem です。それらは(AFAIK)マルチプラットフォームです。

于 2012-01-04T01:23:19.577 に答える
3

こんにちは私はそのための宝石を作成しました: https://github.com/pr0d1r2/free_disk_space

次の方法で使用できます。

gem 'free_disk_space' # Gemfile に行を追加

内部コードはメソッドを使用します:

FreeDiskSpace.テラバイト('/')

FreeDiskSpace.gigabytes('/')

FreeDiskSpace.megabytes('/')

FreeDiskSpace.キロバイト('/')

FreeDiskSpace.bytes('/')

于 2013-11-16T16:08:46.737 に答える
1

これは Linux システムでのみ機能します。シェルを呼び出しても構わない場合は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)
于 2016-10-31T10:38:28.543 に答える
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
于 2016-06-23T09:52:58.187 に答える
0
def check_disk_space
  system('df -H | grep debug > ff')
  ss = File.open('ff').read.split(/\s+/)
  system('rm ff')
  "#{ss[3]}"
end

ubuntu で使用され、デバッグ サイズを確認し、使用可能なサイズを出力として配置します。

于 2013-07-14T02:20:42.453 に答える