go语言检查磁盘分区使用情况

go语言检查磁盘分区使用情况

利用系统调用syscall.Statfs获取磁盘分区使用情况

package main

import (
    "fmt"
    "math"
    "errors"
    "syscall"
)

func PartitionUsage(path string) (int, error) {
    fs := syscall.Statfs_t{}

    err := syscall.Statfs(path, &fs)
    if err != nil {
        return 0, err
    } else if fs.Blocks <= 0 {
        return 0, errors.New("partition size is zero")
    }

    allBlock  := fs.Blocks
    usedBlock := fs.Blocks - fs.Bfree

    round := func(x float64) int { return int(math.Floor(x + 0.5)) }

    return round(float64(usedBlock) / float64(allBlock) * 100), nil
}

func main() {
    usage, _ := PartitionUsage("/home")

    fmt.Println(usage)

}

函数PartitionUsage()返回分区的使用百分比。参数path是分区的路径,返回使用的四舍五入百分比值。
其中函数round就是模拟四舍五入的运算。

运行结果:

$ go build && ./main 
92
$ df | grep /home
/dev/...                 172721768 158096648  14625120  92% /home

你可能感兴趣的:(go语言检查磁盘分区使用情况)