![](/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.