博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
f_bfree和f_bavail的区别
阅读量:5982 次
发布时间:2019-06-20

本文共 1084 字,大约阅读时间需要 3 分钟。

Linux系统开发中,在使用statfs统计分区空间时,要注意f_bfree和f_bavail两个值的区别。

实验一下:
以/boot分区为例,上面使用C代码查看分区信息,下面使用系统命令df查看分区信息

#include 
               #include 
int main(){    struct statfs sfs;    int i = statfs("/boot", &sfs);    int percent = (sfs.f_blocks - sfs.f_bfree ) * 100 / (sfs.f_blocks -sfs.f_bfree + sfs.f_bavail) + 1;    printf("/dev/sda1 %ld %ld %ld %d%% /boot\n",                           4*sfs. f_blocks, 4*(sfs.f_blocks - sfs.f_bfree),    4*sfs.f_bavail, percent);    system("df /boot ");    return 0;}

#include 
        #include 
int main(){    struct statfs sfs;    int i = statfs("/boot", &sfs);    int percent = (sfs.f_bfree - sfs.f_bavail ) * 100 / sfs.f_blocks;        printf("/dev/sda1 free=%ld avail=%ld block=%ld block-free=%ld percent=%d%% /boot\n", 4*sfs. f_bfree, 4*sfs. f_bavail, 4*sfs. f_blocks, 4*(sfs.f_bfree - sfs.f_bavail), percent);        return 0;}

可以看到f_bfree和f_bavail两个值的区别,前者是硬盘所有剩余空间,后者为非root用户剩余空间。一般ext3文件系统会给root留5%的独享空间。所以如果计算出来的剩余空间总比df显示的要大,那一定是你用了f_bfree。 5%的空间大小这个值是仅仅给root用的,普通用户用不了,目的是防止文件系统的碎片。  

转载地址:http://pseox.baihongyu.com/

你可能感兴趣的文章
java B2B2C Springcloud仿淘宝电子商城系统-Zipkin服务端配置
查看>>
Node.js的npm全局安装包引用
查看>>
js事件杂谈
查看>>
SQL Server基础知识 -- SQL 用于各种数据库的数据类型
查看>>
angularjs~ng-class
查看>>
我的友情链接
查看>>
Win 2008 R2安装SQL Server 2008“性能计数器注册表配置单元一致性”失败的解决办法...
查看>>
ROS标记时需要注意的
查看>>
django之防止csrf跨站***
查看>>
applicationcontext.xml怎么分模块简化配置
查看>>
Django Admin
查看>>
负载均衡 (一) 工作模式以及工作原理
查看>>
Android 70道面试题汇总不再愁面试
查看>>
从ArrayList说起的JAVA复制与参数传递机制
查看>>
Servlet
查看>>
比较好的网站及工具
查看>>
Keychain
查看>>
Webview图片自适应
查看>>
使用 getopt() 进行命令行处理
查看>>
js去掉html标记,中正则表达式,去掉字符,截取字符
查看>>