1 简介
以下系统环境可以使用:
- FreeBSD i386/amd64/arm
- Linux i386/amd64/arm(raspberry pi)
- Windows i386/amd64/arm/arm64
- Darwin i386/amd64
- OpenBSD amd64 (Thank you @mpfz0r!)
- Solaris amd64 (developed and tested on SmartOS/Illumos, Thank you @jen20!)
这些都有部分支持:
- CPU on DragonFly BSD
- host on Linux RISC-V
安装方式:
go get github.com/shirou/gopsutil 复制代码
2 常用的API具体使用
2.1 CPU信息
package main import ( "fmt" "github.com/shirou/gopsutil/cpu" "time" ) //获取CPU信息 func getCpuInfo() { //1 CPU全部信息 cpuInfos, err := cpu.Info() if err != nil { fmt.Printf("获取CPU信息出错 , err:\n %v", err) } for _, ci := range cpuInfos { fmt.Println("CPU基本信息 : \n", ci) } // 实时加载CPU使用率 for { //每秒加载一次 percent, _ := cpu.Percent(time.Second, false) fmt.Printf("CPU负载信息 : %v\n", percent) } } func main() { getCpuInfo() } 复制代码
2.2 磁盘信息
package main import ( "fmt" "github.com/shirou/gopsutil/disk" ) // 磁盘信息 func getDiskInfo() { parts, err := disk.Partitions(true) if err != nil { fmt.Printf("获取磁盘信息失败 , err:%v\n", err) return } for _, part := range parts { fmt.Printf("磁盘分区 :%v\n", part.String()) diskInfo, _ := disk.Usage(part.Mountpoint) fmt.Printf("该磁盘使用信息:used:%v free:%v\n", diskInfo.UsedPercent, diskInfo.Free) } ioStat, _ := disk.IOCounters() for k, v := range ioStat { fmt.Printf("%v:%v\n", k, v) } } func main() { getDiskInfo() } 复制代码
2.3 内存信息
package main import ( "fmt" "github.com/shirou/gopsutil/mem" ) //内存信息 func getMemInfo() { //获取内存信息 memInfo, _ := mem.VirtualMemory() fmt.Printf("内存信息 :\n %v", memInfo) } func main() { getMemInfo() } 复制代码
2.4 主机信息
package main import ( "fmt" "github.com/shirou/gopsutil/host" ) //主机信息 func getHostInfo() { hInfo, _ := host.Info() fmt.Printf("主机信息 :\n %v", hInfo) } func main() { getHostInfo() } 复制代码
2.5 IP地址信息
package main import ( "fmt" "net" ) func GetLocalIP() (ip string, err error) { addrs, err := net.InterfaceAddrs() if err != nil { return } for _, addr := range addrs { ipAddr, ok := addr.(*net.IPNet) if !ok { continue } if ipAddr.IP.IsLoopback() { continue } if !ipAddr.IP.IsGlobalUnicast() { continue } return ipAddr.IP.String(), nil } return } func main() { ip, err := GetLocalIP() if err!=nil { fmt.Print(err) } fmt.Println("IP地址 : "+ip) }