【问题标题】:Linux: Getting Mount Point Utilization from /proc?Linux:从 /proc 获取挂载点利用率?
【发布时间】:2014-05-31 18:26:11
【问题描述】:

我知道我可以使用 df 之类的命令行工具并执行以下操作来获取挂载点利用率:

popen("df -h /var/log | awk '{if($1==\"tmpfs\") print $5}'","r")

其中第五列是使用百分比。

我想知道是否有办法从 /proc/ 访问挂载点利用率,例如 /proc/mounts。我觉得从 /proc/ 获取这些信息会比使用 df 和 awk 来解析使用情况更快、更有效。我搜索了 mntent.h 但也找不到任何有希望的东西。有什么想法吗?

【问题讨论】:

    标签: c linux embedded-linux


    【解决方案1】:

    您可能需要statfs(2) 系统调用(它不使用/proc/)。您可能会通过 statvfs(3) Posix 函数使用它。

    注意/proc/ 文件系统(以及/sys/ ...)包含由内核按需生成的伪文件,无需任何IO。见proc(5)。您可以按顺序读取/proc/self/mounts 和/或/proc/self/mountstats 和/或/proc/fs/ 和/或/sys/ 下的适当文件(例如/proc/fs/ext4/sda1/ 甚至/sys/block/sda/sda1/ 中的某些文件my em> 台式电脑;在 你的 ....)

    上会有所不同

    也许systemd也能提供这样的信息,但我不够了解。

    【讨论】:

    • 这绝对优于使用 df 和 awk 从 C 代码中获取 fs 使用统计信息。性能提升要好几个数量级。很好的答案。
    • 如何使用 statfs(2) 推断文件系统所在的块设备名称?
    • @0x2207:我不确定你的问题是否理解(在病态的情况下,块设备可能存在没有任何名称,或者有多个名称)。你可以考虑使用proc(5),或许/proc/self/mounts
    • 我的意思是我想推断给定文件路径的“挂载源”。
    • 你可能会解析 /proc/self/mounts/proc/self/mountstats
    猜你喜欢
    • 2012-03-06
    • 2013-01-04
    • 2011-07-27
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多