美文网首页Go知识库
go语言检查磁盘分区使用情况

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

作者: CodingCode | 来源:发表于2018-06-06 14:25 被阅读44次

    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语言检查磁盘分区使用情况

        本文链接:https://www.haomeiwen.com/subject/usubsftx.html