簡體   English   中英

如何在 Go 中列出塊設備?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM