package docker import ( "bytes" "os/exec" "strconv" "strings" ) // Return bytes, inodes occupied by a directory and/or error if there is any func du(path string) (int, int, error) { space, inodes := 0, 0 // Occupied space var out bytes.Buffer command := exec.Command("/usr/bin/du -m -s " + path) command.Stdout = &out err := command.Run() if err != nil { return space, inodes, err } fields := strings.Fields(strings.TrimSpace(out.String())) out.Reset() if len(fields) == 2 { space, err = strconv.Atoi(fields[0]) if err != nil { return space, inodes, err } } // Occupied inodes command = exec.Command("/usr/bin/du --inodes -s " + path) command.Stdout = &out err = command.Run() if err != nil { return space, inodes, err } fields = strings.Fields(strings.TrimSpace(out.String())) out.Reset() if len(fields) == 2 { space, err = strconv.Atoi(fields[0]) if err != nil { return inodes, inodes, err } } return space, inodes, nil }