加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

linux下通过go语言获得系统进程cpu使用情况的方法

发布时间:2020-12-16 19:32:47 所属栏目:大数据 来源:网络整理
导读:本篇章节讲解linux下通过go语言获得系统进程cpu使用情况的方法。供大家参考研究。具体分析如下: 这段代码通过linux的系统命令 ps来分析cpu的使用情况,代码如下: 复制代码 代码如下: package main import ( "bytes" "log" "os/exec" "strconv" "st

本篇章节讲解linux下通过go语言获得系统进程cpu使用情况的方法。分享给大家供大家参考。具体分析如下:

这段代码通过linux的系统命令 ps来分析cpu的使用情况,代码如下:

复制代码 代码如下:
package main
import (
    "bytes"
    "log"
    "os/exec"
    "strconv"
    "strings"
)
type Process struct {
    pid int
    cpu float64
}
func main() {
    cmd := exec.Command("ps","aux")
    var out bytes.Buffer
    cmd.Stdout = &out
    err := cmd.Run()
    if err != nil {
        log.Fatal(err)
    }
    processes := make([]*Process,0)
    for {
        line,err := out.ReadString('n')
        if err!=nil {
            break;
        }
        tokens := strings.Split(line," ")
        ft := make([]string,0)
        for _,t := range(tokens) {
            if t!="" && t!="t" {
                ft = append(ft,t)
            }
        }
        log.Println(len(ft),ft)
        pid,err := strconv.Atoi(ft[1])
        if err!=nil {
            continue
        }
        cpu,err := strconv.ParseFloat(ft[2],64)
        if err!=nil {
            log.Fatal(err)
        }
        processes = append(processes,&Process{pid,cpu})
    }
    for _,p := range(processes) {
        log.Println("Process ",p.pid," takes ",p.cpu," % of the CPU")
    }
}

希望本文所述对大家的Go语言程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读