加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

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

发布时间:2016-12-04 13:25:18 所属栏目:教程 来源:站长网
导读:本文实例讲述了linux下通过go语言获得系统进程cpu使用情况的方法。分享给大家供大家参考。具体分析如下: 这段代码通过linux的系统命令 ps来分析cpu的使用情况,代码如下: 复制代码 代码如下:package main import ( nbsp;nbsp;nbsp; "bytes" nbsp;nbsp;nb

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

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

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

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读