开发者

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

开发者 https://www.devze.com 2022-12-07 13:26 出处:网络 作者: 两把刷子
本文实例讲述了linux下通过go语言获得系统进程cpu使用情况的方法。分享给大家供大家参考。具体分析如下:

本文实例讲述了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)

    }

&nTkqxDbsp;   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) {

  &n编程客栈bsp; &n编程客栈bsp;       if t!="" && t!="\t" {

                ft = append(fthttp://www.devze.com, t)

            }

        }

        log.Println(len(ft), ft)

        pid, err := strconv.Atoi(ft[1])

        if err!=nil {

        &编程客栈nbsp;   continue

        }

        cpu, err := strconv.ParseFloat(ft[2], 64)

        if err!=nil {

            log.Fatal(e开发者_kubernetesrr)

        }

        processes = append(processes, &Process{pid, cpu})

    }

    for _, p := range(processes) {

        log.Println("Process ", p.pid, " takes ", p.cpu, " % of the CPU")

    }

}

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号