前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux下通过go语言获得系统进程cpu使用情况的方法

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

作者头像
李海彬
发布2018-03-21 11:23:22
1.1K0
发布2018-03-21 11:23:22
举报
文章被收录于专栏:Golang语言社区Golang语言社区
代码语言:javascript
复制
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")

    }

}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档