| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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)
- }
|