u_disk.go 858 B

123456789101112131415161718192021222324252627282930313233
  1. package util
  2. import (
  3. "os/exec"
  4. "strconv"
  5. "strings"
  6. )
  7. // GetDiskUsagePercent 获取磁盘使用率
  8. func GetDiskUsagePercent() (float64, error) {
  9. // 执行 df 命令获取磁盘使用情况
  10. cmd := exec.Command("df", "--total")
  11. output, err := cmd.Output()
  12. if err != nil {
  13. return 0.0, err
  14. }
  15. // 解析 df 命令输出,计算磁盘占比
  16. lines := strings.Split(string(output), "\n")
  17. for _, line := range lines[1:] {
  18. fields := strings.Fields(line)
  19. if len(fields) >= 6 && fields[0] == "total" {
  20. //filesystem := fields[0]
  21. total, _ := strconv.ParseFloat(strings.TrimSuffix(fields[1], "G"), 64)
  22. used, _ := strconv.ParseFloat(strings.TrimSuffix(fields[2], "G"), 64)
  23. usedPercent := (used / total) * 100
  24. //fmt.Printf("文件系统 %s 已使用 %.2f%%\n", filesystem, usedPercent)
  25. return usedPercent, err
  26. }
  27. }
  28. return 0.0, nil
  29. }