package disk import ( "context" "encoding/json" "github.com/shirou/gopsutil/v3/internal/common" ) var invoke common.Invoker = common.Invoke{} type UsageStat struct { Path string `json:"path"` Fstype string `json:"fstype"` Total uint64 `json:"total"` Free uint64 `json:"free"` Used uint64 `json:"used"` UsedPercent float64 `json:"usedPercent"` InodesTotal uint64 `json:"inodesTotal"` InodesUsed uint64 `json:"inodesUsed"` InodesFree uint64 `json:"inodesFree"` InodesUsedPercent float64 `json:"inodesUsedPercent"` } type PartitionStat struct { Device string `json:"device"` Mountpoint string `json:"mountpoint"` Fstype string `json:"fstype"` Opts []string `json:"opts"` } type IOCountersStat struct { ReadCount uint64 `json:"readCount"` MergedReadCount uint64 `json:"mergedReadCount"` WriteCount uint64 `json:"writeCount"` MergedWriteCount uint64 `json:"mergedWriteCount"` ReadBytes uint64 `json:"readBytes"` WriteBytes uint64 `json:"writeBytes"` ReadTime uint64 `json:"readTime"` WriteTime uint64 `json:"writeTime"` IopsInProgress uint64 `json:"iopsInProgress"` IoTime uint64 `json:"ioTime"` WeightedIO uint64 `json:"weightedIO"` Name string `json:"name"` SerialNumber string `json:"serialNumber"` Label string `json:"label"` } func (d UsageStat) String() string { s, _ := json.Marshal(d) return string(s) } func (d PartitionStat) String() string { s, _ := json.Marshal(d) return string(s) } func (d IOCountersStat) String() string { s, _ := json.Marshal(d) return string(s) } // Usage returns a file system usage. path is a filesystem path such // as "/", not device file path like "/dev/vda1". If you want to use // a return value of disk.Partitions, use "Mountpoint" not "Device". func Usage(path string) (*UsageStat, error) { return UsageWithContext(context.Background(), path) } // Partitions returns disk partitions. If all is false, returns // physical devices only (e.g. hard disks, cd-rom drives, USB keys) // and ignore all others (e.g. memory partitions such as /dev/shm) // // 'all' argument is ignored for BSD, see: https://github.com/giampaolo/psutil/issues/906 func Partitions(all bool) ([]PartitionStat, error) { return PartitionsWithContext(context.Background(), all) } func IOCounters(names ...string) (map[string]IOCountersStat, error) { return IOCountersWithContext(context.Background(), names...) } // SerialNumber returns Serial Number of given device or empty string // on error. Name of device is expected, eg. /dev/sda func SerialNumber(name string) (string, error) { return SerialNumberWithContext(context.Background(), name) } // Label returns label of given device or empty string on error. // Name of device is expected, eg. /dev/sda // Supports label based on devicemapper name // See https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-block-dm func Label(name string) (string, error) { return LabelWithContext(context.Background(), name) }