ruby でディスク容量情報を取得する最良の方法は何ですか? 私は純粋なルビーソリューションを好みます。不可能な場合 (gem を追加しても)、標準の ubuntu デスクトップ インストールで使用可能な任意のコマンドを使用して、情報を解析して ruby にすることもできます。
10 に答える
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 は、この分野で多くの逸品を管理しています。そこにあるのは、sys-cpu、sys-uptime、sys-uname、sys-proctable、sys-host、sys-admin、sys-filesystem です。それらは(AFAIK)マルチプラットフォームです。
こんにちは私はそのための宝石を作成しました: https://github.com/pr0d1r2/free_disk_space
次の方法で使用できます。
gem 'free_disk_space' # Gemfile に行を追加
内部コードはメソッドを使用します:
FreeDiskSpace.テラバイト('/')
FreeDiskSpace.gigabytes('/')
FreeDiskSpace.megabytes('/')
FreeDiskSpace.キロバイト('/')
FreeDiskSpace.bytes('/')
これは 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)
コメント 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
def check_disk_space
system('df -H | grep debug > ff')
ss = File.open('ff').read.split(/\s+/)
system('rm ff')
"#{ss[3]}"
end
ubuntu で使用され、デバッグ サイズを確認し、使用可能なサイズを出力として配置します。