Rust 计算磁盘使用率百分比以匹配df Use%输出
我正试图用以下方法计算并显示当前磁盘使用率的百分比:Rust 计算磁盘使用率百分比以匹配df Use%输出,rust,linux-df,Rust,Linux Df,我正试图用以下方法计算并显示当前磁盘使用率的百分比: use nix::sys::statvfs::statvfs; macro_rules! cast { ($x:expr) => { u64::from($x) }; } fn main() { let stat = statvfs("/var/db".as_bytes()).unwrap(); // f_frsize // let total_space = cast!(st
use nix::sys::statvfs::statvfs;
macro_rules! cast {
($x:expr) => {
u64::from($x)
};
}
fn main() {
let stat = statvfs("/var/db".as_bytes()).unwrap();
// f_frsize
// let total_space = cast!(stat.fragment_size()) * cast!(stat.blocks());
// let avail_space = cast!(stat.fragment_size()) * cast!(stat.blocks_available());
// f_bsize
let total_space = cast!(stat.block_size()) * cast!(stat.blocks());
let avail_space = cast!(stat.block_size()) * cast!(stat.blocks_available());
let used = total_space - avail_space;
let usage = used * 100 / total_space;
println!("total: {}", total_space);
println!("avail: {}", avail_space);
println!("used: {}", used);
println!("use%: {}%", usage);
}
我当前测试系统的输出为:
total: 6779424768
avail: 3697811456
used: 3081613312
use%: 45%
df-b1/var/db的输出
# df -B 1 /var/db
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/loop3 6779424768 2713636864 3697811456 43% /var/db
Used
字段不匹配2713636864
我通过执行6779424768-3697811456=3081613312
df的输出-h/var/db
:
# df -h /var/db
Filesystem Size Used Avail Use% Mounted on
/dev/loop3 6.4G 2.6G 3.5G 43% /var/db
我想我在转换单位时遗漏了一些东西,我已经尝试使用了f\u frsize
而不是f\u bsize
,结果仍然相同,上面的代码返回45
和df43
有什么想法吗?可能相关: