93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
package computerInfo
|
||
|
||
import (
|
||
"log"
|
||
"time"
|
||
|
||
"github.com/shirou/gopsutil/mem"
|
||
"github.com/shirou/gopsutil/v3/cpu"
|
||
"gitlab.com/tingshuo/go-diskstate/diskstate"
|
||
)
|
||
|
||
type Storage struct {
|
||
Name string
|
||
FileSystem string
|
||
Total uint64
|
||
Free uint64
|
||
}
|
||
|
||
type storageInfo struct {
|
||
Name string
|
||
Size uint64
|
||
FreeSpace uint64
|
||
FileSystem string
|
||
Used uint64
|
||
}
|
||
|
||
// func GetStorageInfo() {
|
||
// var storageinfo []storageInfo
|
||
// var loaclStorages []Storage
|
||
// err := wmi.Query("Select * from Win32_LogicalDisk", &storageinfo)
|
||
// if err != nil {
|
||
// return
|
||
// }
|
||
|
||
// for _, storage := range storageinfo {
|
||
// info := Storage{
|
||
// Name: storage.Name,
|
||
// FileSystem: storage.FileSystem,
|
||
// Total: storage.Size / 1024 / 1024 / 1024,
|
||
// Free: storage.FreeSpace / 1024 / 1024 / 1024,
|
||
// }
|
||
// if info.Total >= 1 {
|
||
// fmt.Printf("%s总大小%dG,可用%dG\n", info.Name, info.Total, info.Free)
|
||
// loaclStorages = append(loaclStorages, info)
|
||
// }
|
||
// }
|
||
// fmt.Printf("localStorages:= %v\n", loaclStorages)
|
||
// }
|
||
|
||
func GetCurrentStorageInfo(path string) storageInfo {
|
||
state := diskstate.DiskUsage(path)
|
||
info := storageInfo{}
|
||
info.Size = uint64(state.All / diskstate.B)
|
||
info.FreeSpace = uint64(state.Free / diskstate.B)
|
||
info.Used = uint64(state.Used / diskstate.B)
|
||
|
||
// fmt.Printf("All=%dM, Free=%dM, Available=%dM, Used=%dM, Usage=%d%%",
|
||
// state.All/diskstate.B, state.Free/diskstate.MB, state.Available/diskstate.MB, state.Used/diskstate.MB, 100*state.Used/state.All)
|
||
return info
|
||
}
|
||
|
||
type ComputerMonitor struct {
|
||
CPU float64 `json:"cpu"`
|
||
Mem float64 `json:"mem"`
|
||
}
|
||
|
||
// GetCPUPercent 获取CPU使用率
|
||
func GetCPUPercent() float64 {
|
||
percent, err := cpu.Percent(time.Second, false)
|
||
if err != nil {
|
||
log.Fatalln(err.Error())
|
||
return -1
|
||
}
|
||
return percent[0]
|
||
}
|
||
|
||
// GetMemPercent 获取内存使用率
|
||
func GetMemPercent() float64 {
|
||
memInfo, err := mem.VirtualMemory()
|
||
if err != nil {
|
||
log.Fatalln(err.Error())
|
||
return -1
|
||
}
|
||
return memInfo.UsedPercent
|
||
}
|
||
|
||
func GetCpuMem() ComputerMonitor {
|
||
var res ComputerMonitor
|
||
res.CPU = GetCPUPercent()
|
||
res.Mem = GetMemPercent()
|
||
return res
|
||
}
|