11、GO语言使用gopsutil包进行机器信息采集

package main

import (
    "fmt"
    "github.com/shirou/gopsutil/cpu"
    "github.com/shirou/gopsutil/disk"
    "github.com/shirou/gopsutil/host"
    "github.com/shirou/gopsutil/mem"
    "github.com/shirou/gopsutil/net"
    "github.com/shirou/gopsutil/process"
    "time"
)

func main() {
    //获取本机信息
    h,_ := host.Info()
    fmt.Println("本机信息:",h)

    //获取CPU信息
    c,_ := cpu.Info()
    fmt.Println("cpu信息:",c)
    /*用户CPU时间/系统CPU时间/空闲时间。。。等等
    用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。
    系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。
    */
    c1,_ := cpu.Times(false)
    fmt.Println("cpu1:",c1)

    //CPU使用率,每秒刷新一次
    for{
     c2, _ := cpu.Percent(time.Duration(time.Second), false)
     fmt.Println(c2)
    }

    //获取物理内存和交换区内存信息
    m1, _ := mem.VirtualMemory()
    fmt.Println("m1:",m1)
    m2, _ := mem.SwapMemory()
    fmt.Println("m2:",m2)

    //可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息
    d1, _ := disk.Partitions(true)  //所有分区
    fmt.Println("d1:",d1)
    d2, _ := disk.Usage("E:")  //指定某路径的硬盘使用情况
    fmt.Println("d2:",d2)
    d3, _ := disk.IOCounters()  //所有硬盘的io信息
    fmt.Println("d3:",d3)

    //获取当前网络连接信息
    n1, _ := net.Connections("all")  //可填入tcp、udp、tcp4、udp4等等
    fmt.Println("n1:",n1)

    //获取网络读写字节/包的个数
    n2, _ := net.IOCounters(false)
    fmt.Println("n2:",n2)

    //获取到所有进程的详细信息
    p1, _ := process.Pids()  //获取当前所有进程的pid
    fmt.Println("p1:",p1)
    p2,_ := process.GetWin32Proc(1120)  //对应pid的进程信息
    fmt.Println("p2:",p2)
    //fmt.Println(p2[0].ParentProcessID)  //获取父进程的pid
}
  • 参考:https://blog.csdn.net/sinat_26682309/article/details/90457192

你可能感兴趣的:(11、GO语言使用gopsutil包进行机器信息采集)