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