![](/img/trans.png)
[英]How do you configure I/O throttles on multiple block devices within one cgroup?
[英]How do I list block devices in Go?
我想在Linux 64位系统中获取lsblk
命令显示的数据。 显然我可以调用lsblk
并解析输出。 我的问题是在 Go 中是否有更好的方法来做到这一点?
谢谢。
由于lsblk
已经可用并且已经完成了您想要的操作(从系统收集信息并将该信息合成为您想要的形式),我认为使用它是最好的方法。
lsblk
源代码在这里: https : //github.com/karelzak/util-linux/blob/master/misc-utils/lsblk.c 。 乍一看,就个人而言,这在 Go 中复制似乎很重要,并且可能值得在 util-linux 包更新时解析输出和测试损坏的麻烦。
这最终是必须根据您的特定标准为您的个人项目做出的决定。
我只需要顶级设备的名称,最后只列出/sys/block
的内容,这很方便,因为它不需要运行命令,也不需要解析输出。
func GetDevices() []string {
dir, err := ioutil.ReadDir("/sys/block")
if err != nil {
panic(err)
}
files := make([]string, 0)
for _, f := range dir {
if strings.HasPrefix(f.Name(), "loop") {
continue
}
files = append(files, f.Name())
}
return files
}
既不是一个非常强大或便携的解决方案,也不是我需要的。
您还可以设想解析/proc/diskstats
或/proc/partitions
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.