使用接口statfs

函数接口:

int statfs(const charpath, struct statfsbuf);
 参数:
  path: 位于需要查询信息的文件系统的文件路径
  buf: statfs结构体类型的指针变量,用于存储文件系统的相关信息

statfs 结构体:

struct statfs{
    long f_type;     //文件系统的类型
    long f_bsize;   //经优化后的传输块的大小
    long f_blocks;  //文件系统数据块总数
    long f_bfree;    //可用块数
    long f_bavail;   //普通用户能够获得的块数
    long f_files;      //文件结点总数
    long f_ffree;     //可用文件结点数
    fisd_t f_fsid;     //文件系统标识
    long f_namelen;  //文件名的最大长度
}

Tips:

f_bfree VS f_bavail 区别:

f_bfree  是 硬盘所有剩余空间

f_bavail 是 非root用户剩余空间, 一般ext3文件系统会给root留5%的独享空间

zabbix 源码:


static int  get_fs_size_stat(const char *fs, zbx_uint64_t *total, zbx_uint64_t *free,zbx_uint64_t *used, double *pfree, double *pused, char **error)
{
#ifdef HAVE_SYS_STATVFS_H
#   define ZBX_STATFS   statvfs
#   define ZBX_BSIZE    f_frsize
#else
#   define ZBX_STATFS   statfs
#   define ZBX_BSIZE    f_bsize
#endifstruct ZBX_STATFS s;if (NULL == fs || '\0' == *fs){*error = zbx_strdup(NULL, "Filesystem name cannot be empty.");zabbix_log(LOG_LEVEL_DEBUG,"%s failed with error: %s",__func__, *error);return SYSINFO_RET_FAIL;}if (0 != ZBX_STATFS(fs, &s)){*error = zbx_dsprintf(NULL, "Cannot obtain filesystem information: %s", zbx_strerror(errno));zabbix_log(LOG_LEVEL_DEBUG,"%s failed with error: %s",__func__, *error);return SYSINFO_RET_FAIL;}/* Available space could be negative (top bit set) if we hit disk space *//* reserved for non-privileged users. Treat it as 0.                    */if (0 != ZBX_IS_TOP_BIT_SET(s.f_bavail))s.f_bavail = 0;//磁盘整体空间字节数, f_blocks * f_bsizeif (NULL != total)*total = (zbx_uint64_t)s.f_blocks * s.ZBX_BSIZE;// 用户级空闲空间的大小, f_bavail * f_bsizeif (NULL != free)*free = (zbx_uint64_t)s.f_bavail * s.ZBX_BSIZE;//已使用空间大小: (f_blocks - f_bfree)* f_bsizeif (NULL != used)*used = (zbx_uint64_t)(s.f_blocks - s.f_bfree) * s.ZBX_BSIZE;//可用百分比if (NULL != pfree){if (0 != s.f_blocks - s.f_bfree + s.f_bavail)*pfree = (double)(100.0 * s.f_bavail) / (s.f_blocks - s.f_bfree + s.f_bavail);else*pfree = 0;}//已用百分比if (NULL != pused){if (0 != s.f_blocks - s.f_bfree + s.f_bavail)*pused = 100.0 - (double)(100.0 * s.f_bavail) / (s.f_blocks - s.f_bfree + s.f_bavail);else*pused = 0;}return SYSINFO_RET_OK;
}

Linux平台下使用 df -h / 验证磁盘实际使用情况

需要注意的是, df 命令获得的是整数百分比,没有小数,使用的是进一法,而不是四舍五入法。

linux 服务器之查看磁盘使用情况相关推荐

  1. linux服务器之查看内存使用情况

    读取/proc/meminfo 文件 MemTotal: 45964 kB //所有可用的内存大小,物理内存减去预留位和内核使用.系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内 ...

  2. Linux df -h查看磁盘使用情况

  3. 查看磁盤使用情况linux,在Linux系统下安装Filelight来查看磁盘使用情况

    在 Linux 系统下要查看硬盘的使用情况有非常多的命令可以实现,但是本文给你介绍一款软件:Filelight,开源并免费使用,我们在 Linux 下安装上它用图形化界面来显示磁盘的使用情况,它以彩色 ...

  4. Linux和Windows系统环境查看磁盘使用情况—DU

    1.1 概述 众所周知,Linux环境下查看磁盘使用情况使用du命令,查看磁盘分区的使用情况使用df命令:那么,在Windows系统环境下能否使用du命令呢?本期文章结合实践操作向各位小伙伴总结分享L ...

  5. linux显示磁盘使用情况命令,Linux查看磁盘使用情况命令(示例代码)

    一.df -lh 命令df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置:文件系统                 容量   ...

  6. linux 查看磁盘信息命令行,Linux系统中查看磁盘空间信息的命令

    Linux系统中磁盘空间的信息我们要怎么查看呢?下面由学习啦小编为大家整理了Linux系统中查看磁盘空间信息的命令,希望对大家有帮助! Linux系统中查看磁盘空间信息的命令:一.df -lh 命令 ...

  7. linux ifstat 网卡流量,linux 使用ifstat查看网络使用情况

    首先安装ifstat wget http://distfiles.macports.org/ifstat/ifstat-1.1.tar.gz tar xzvf ifstat-1.1.tar.gz cd ...

  8. 空服务器安装linux,debian服务器linux服务器web建站搭建linux服务器之Debian安装

    debian服务器linux服务器web建站搭建linux服务器之Debian安装 原文来自i火吧 大家都知道linux的发行版本很多,有centos啊,debian啊,ubuntu等,下面我就用de ...

  9. Linux / Ubuntu系统查看磁盘空间及目录容量

    Linux / Ubuntu系统查看磁盘空间及目录容量 常用命令: df -hl 查看磁盘剩余空间 df -h 查看每个根路径的分区大小 参考:https://blog.csdn.net/dta050 ...

最新文章

  1. [Bzoj2282]消防(二分答案+树的直径)
  2. Sharepoint 2007 用代码聚合所有子网站文章 (populating data sources in code)
  3. matlab debug出现k,MATLAB下的程序调试
  4. Spring 自动装配模式之byType
  5. mobile-util.js适配移动端的js
  6. Ubuntu 14.04 下 Virtual Judge 的搭建
  7. MySQL入门之数据完整性约束与表维护
  8. matplotlib 子图超过4个_Python数据分析:用Matplotlib可视化创建套图
  9. sqlite 迁移 oracle,Oracle 数据导入 Sqlite
  10. Python3 PyV8“安装与使用”教程
  11. Linux:进程间的相互作用(模拟两个进程,一个存钱,另一个取钱),进程共享内存,进程的互斥,进程加锁,c++和c实现
  12. 【软件架构文档之SOC篇】
  13. Matlab建的模型如何导入MS中,lammps输出的模型如何导入MS中建模
  14. Excel高级图表制作②——帕累托图
  15. 开juǎn有益系列(一)——Binary search(二分查找/折半查找算法)
  16. Vue.js下载与安装
  17. python3 socket TCP 服务器 一对多转发信息
  18. iOS-脚本打包出现的问题最后居然这么解决了
  19. 71java并发编程不得不知道的几件事
  20. js 中 true == 1 false == 0

热门文章

  1. python线程与进程
  2. SQL基本语句语法释义
  3. 洛谷 - P3321 [SDOI2015]序列统计(原根+NTT)
  4. 牛客多校8 - Interesting Computer Game(并查集)
  5. 牛客多校3 - Fraction Construction Problem(扩展欧几里得)
  6. CodeForces - 1325F Ehabs Last Theorem(dfs树找最大环)
  7. 中石油训练赛 - 小说(最短路+二分)
  8. html遮罩实例,给原生html中添加水印遮罩层的实现示例
  9. HDOJ1907 SG问题
  10. 微型计算机与裸机,第一章 微型计算机基础