Ruby:从/proc 获取 Linux 上的磁盘使用信息(或其他一些非阻塞且不会产生新进程的方式)

标签 ruby linux

上下文:

我在 Linux 上。我正在为 Sensu 编写磁盘使用扩展。扩展必须是非阻塞的,因为它们包含在代理的主代码循环中。它们还必须非常轻巧,因为它们可能每 10 秒触发一次,甚至每秒触发一次。

所以我无法生成新的可执行文件来收集磁盘使用信息。在 Ruby 中,我只能在/proc 和/sys 上执行 File.open() 之类的操作,读取内容,解析它,file.close(),然后打印结果。重复。

我找到了 sys-filesystem gem,它似乎拥有我需要的一切。但如果可以避免的话,我宁愿不强制扩展依赖于 gems。如果事实证明它是最好的方法,我会使用 gem,但是有没有更好的选择?不需要大量编码的东西?

最佳答案

可以通过系统调用statfs获取信息

http://man7.org/linux/man-pages/man2/statfs.2.html

我可以看到这里有一个 ruby​​ 接口(interface):

http://ruby-doc.org/core-trunk/File/Statfs.html

关于Ruby:从/proc 获取 Linux 上的磁盘使用信息(或其他一些非阻塞且不会产生新进程的方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018932/

相关文章:

linux - "-sh: executable_path:not found"是什么意思

ruby - 在 odroid 上安装 Gitlab 时出现问题(v8 库不可用?)

ruby - 如何在一个语句中从一组类对象构建散列

c - recv() 在 netlink 套接字中返回 0

linux - 给定一个 IP 地址,在同一子网中查找接口(interface)

linux - 使用正在运行的进程重新挂载磁盘

ruby-on-rails - Rails/Postgres - 我需要什么类型的数据库锁?

ruby - 如何动态更改 Ruby 中的嵌套?

ruby - 数字与字符串/表达式与值

c - 如何用C语言编写一个函数来断开客户端与服务器的连接?