1 분 소요

개요

  • 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()
        }