[Go] linux下通过go语言获得系统进程cpu使用情况 →→→→→进入此内容的聊天室

来自 , 2019-06-28, 写在 Go, 查看 104 次.
URL http://www.code666.cn/view/28b805f5
  1. package main
  2.  
  3. import (
  4.     "bytes"
  5.     "log"
  6.     "os/exec"
  7.     "strconv"
  8.     "strings"
  9. )
  10.  
  11. type Process struct {
  12.     pid int
  13.     cpu float64
  14. }
  15.  
  16. func main() {
  17.     cmd := exec.Command("ps", "aux")
  18.     var out bytes.Buffer
  19.     cmd.Stdout = &out
  20.     err := cmd.Run()
  21.     if err != nil {
  22.         log.Fatal(err)
  23.     }
  24.     processes := make([]*Process, 0)
  25.     for {
  26.         line, err := out.ReadString('\n')
  27.         if err!=nil {
  28.             break;
  29.         }
  30.         tokens := strings.Split(line, " ")
  31.         ft := make([]string, 0)
  32.         for _, t := range(tokens) {
  33.             if t!="" && t!="\t" {
  34.                 ft = append(ft, t)
  35.             }
  36.         }
  37.         log.Println(len(ft), ft)
  38.         pid, err := strconv.Atoi(ft[1])
  39.         if err!=nil {
  40.             continue
  41.         }
  42.         cpu, err := strconv.ParseFloat(ft[2], 64)
  43.         if err!=nil {
  44.             log.Fatal(err)
  45.         }
  46.         processes = append(processes, &Process{pid, cpu})
  47.     }
  48.     for _, p := range(processes) {
  49.         log.Println("Process ", p.pid, " takes ", p.cpu, " % of the CPU")
  50.     }
  51. }
  52. //go/5662

回复 "linux下通过go语言获得系统进程cpu使用情况"

这儿你可以回复上面这条便签

captcha