package main import ( "fmt" "os/exec" "strings" ) func getDiskUsage(path string) (uint64, error) { cmd := exec.Command("df", "-B1", path) output, err := cmd.CombinedOutput() if err != nil { return 0, err } lines := strings.Split(string(output), "\n") if len(lines) < 2 { return 0, fmt.Errorf("unexpected output from df command") } fields := strings.Fields(lines[1]) if len(fields) < 3 { return 0, fmt.Errorf("unexpected output format from df command") } used := fields[2] usedBytes, err := parseSize(used) if err != nil { return 0, err } return usedBytes, nil } func parseSize(sizeStr string) (uint64, error) { var size uint64 unit := sizeStr[len(sizeStr)-1] value := sizeStr[:len(sizeStr)-1] _, err := fmt.Sscan(value, &size) if err != nil { return 0, err } switch unit { case 'B': return size, nil case 'K': return size * 1024, nil case 'M': return size * 1024 * 1024, nil case 'G': return size * 1024 * 1024 * 1024, nil default: return 0, fmt.Errorf("unknown unit: %c", unit) } } func main() { path := "/dev/vdb" // 替换为您要查询的硬盘路径,如 "/dev/sda" used, err := getDiskUsage(path) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Used Disk Space: %d bytes\n", used) }