123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package util
- import (
- "github.com/shirou/gopsutil/cpu"
- "github.com/shirou/gopsutil/disk"
- "github.com/shirou/gopsutil/mem"
- "os/exec"
- "strconv"
- "strings"
- "time"
- )
- func GetCpuPercent() float64 {
- percent, _ := cpu.Percent(time.Second, false)
- return percent[0]
- }
- func GetMemoryPercent() float64 {
- memory, _ := mem.SwapMemory()
- return memory.UsedPercent
- }
- func GetDiskPercent() float64 {
- parts, _ := disk.Partitions(true)
- diskInfo, _ := disk.Usage(parts[0].Mountpoint)
- return diskInfo.UsedPercent
- }
- func GetDiskUsed(filesystem string) (uint64, error) {
- cmd := exec.Command("df", "-B1", filesystem)
- output, err := cmd.CombinedOutput()
- if err != nil {
- return 0, err
- }
- lines := strings.Split(string(output), "\n")
- fields := strings.Fields(lines[1])
- parseUint, err := strconv.ParseUint(fields[2], 10, 64)
- if err != nil {
- return 0, err
- }
- return parseUint, nil
- }
- func GetDiskUsagePercent() (float64, error) {
-
- cmd := exec.Command("df", "--total")
- output, err := cmd.Output()
- if err != nil {
- return 0.0, err
- }
-
- lines := strings.Split(string(output), "\n")
- for _, line := range lines[1:] {
- fields := strings.Fields(line)
- if len(fields) >= 6 && fields[0] == "total" {
-
- total, _ := strconv.ParseFloat(strings.TrimSuffix(fields[1], "G"), 64)
- used, _ := strconv.ParseFloat(strings.TrimSuffix(fields[2], "G"), 64)
- usedPercent := (used / total) * 100
-
- return usedPercent, err
- }
- }
- return 0.0, nil
- }
|