Updated:

1 minute read

개요

  • process and system utilities
  • CPU, memory, disks, network, sensors, processes 정보 검색을 위한 크로스 플랫폼 라이브러리


언어 별 라이브러리


예제

  • Go
    •  package main
              
       import (
       	"github.com/shirou/gopsutil/v3/cpu"
       	"github.com/shirou/gopsutil/v3/disk"
       	"github.com/shirou/gopsutil/v3/host"
       	"github.com/shirou/gopsutil/v3/mem"
       	"github.com/shirou/gopsutil/v3/net"
       	"github.com/shirou/gopsutil/v3/process"
       )
              
       func host_info() {
       	println("---------- host start ----------\n")
       	defer println("\n---------- host end ----------\n\n\n")
              
       	if infoStat, err := host.Info(); err != nil {
       		panic(err)
       	} else {
       		println(infoStat.String())
       	}
              
       	println()
              
       	if userStats, err := host.Users(); err != nil {
       		panic(err)
       	} else {
       		for _, userStat := range userStats {
       			println(userStat.String())
       		}
       	}
       }
              
       func cpu_info() {
       	println("---------- cpu start ----------\n")
       	defer println("\n---------- cpu end ----------\n\n\n")
              
       	if count, err := cpu.Counts(false); err != nil {
       		panic(err)
       	} else {
       		println("number of physical cores", ":", count)
       	}
              
       	println("")
              
       	if infoStats, err := cpu.Info(); err != nil {
       		panic(err)
       	} else {
       		for _, infoStat := range infoStats {
       			println(infoStat.String())
       		}
       	}
              
       	println("")
              
       	if timesStats, err := cpu.Times(true); err != nil {
       		panic(err)
       	} else {
       		for _, timesStat := range timesStats {
       			println(timesStat.String())
       		}
       	}
       }
              
       func memory_info() {
       	println("---------- memory start ----------\n")
       	defer println("\n---------- memory end ----------\n\n")
              
       	if virtualMemoryStat, err := mem.VirtualMemory(); err != nil {
       		panic(err)
       	} else {
       		println(virtualMemoryStat.String())
       	}
       }
              
       func disk_info() {
       	println("---------- disk start ----------\n")
       	defer println("\n---------- disk end ----------\n\n")
              
       	if partitionStats, err := disk.Partitions(false); err != nil {
       		panic(err)
       	} else {
       		for _, partitionStat := range partitionStats {
       			println(partitionStat.String())
       			if usageStat, err := disk.Usage(partitionStat.Device); err != nil {
       				panic(err)
       			} else {
       				println(usageStat.String())
       			}
       		}
       	}
       }
              
       func network_info() {
       	println("---------- network start ----------\n")
       	defer println("\n---------- network end ----------\n\n")
              
       	if interfaceStatList, err := net.Interfaces(); err != nil {
       		panic(err)
       	} else {
       		for _, interfaceStat := range interfaceStatList {
       			println(interfaceStat.String())
       		}
       	}
       }
              
       func process_info() {
       	println("---------- process start ----------\n")
       	defer println("\n---------- process end ----------\n\n")
              
       	if processList, err := process.Processes(); err != nil {
       		panic(err)
       	} else {
       		for _, p := range processList {
       			if name, err := p.Name(); err != nil {
       				panic(err)
       			} else {
       				println(p.Pid, ", ", name)
       			}
       		}
       	}
       }
              
       func main() {
       	host_info()
       	cpu_info()
       	memory_info()
       	disk_info()
       	network_info()
       	process_info()
       }