main.go 1010 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package main
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "strconv"
  6. "strings"
  7. )
  8. // getDiskUsage 解析 df 命令的输出
  9. // df -B1 /dev/vdb
  10. // Filesystem 1B-blocks Used Available Use% Mounted on
  11. // /dev/vdb 527371075584 16390344704 484120408064 4% /mnt/disk001
  12. func getDiskUsage(path string) (uint64, error) {
  13. cmd := exec.Command("df", "-B1", path)
  14. output, err := cmd.CombinedOutput()
  15. if err != nil {
  16. return 0, err
  17. }
  18. lines := strings.Split(string(output), "\n")
  19. if len(lines) < 2 {
  20. return 0, fmt.Errorf("unexpected output from df command")
  21. }
  22. fields := strings.Fields(lines[1])
  23. if len(fields) < 3 {
  24. return 0, fmt.Errorf("unexpected output format from df command")
  25. }
  26. parseUint, _ := strconv.ParseUint(fields[2], 10, 64)
  27. return parseUint, nil
  28. }
  29. func main() {
  30. path := "/dev/vdb" // 替换为您要查询的硬盘路径,如 "/dev/sda"
  31. used, err := getDiskUsage(path)
  32. if err != nil {
  33. fmt.Println("Error:", err)
  34. return
  35. }
  36. fmt.Printf("Used Disk Space: %d bytes\n", used)
  37. }