linux下通过go语言获得系统进程cpu使用情况的方法
本文实例讲述了linux下通过go语言获得系统进程cpu使用情况的方法。分享给大家供大家参考。具体分析如下:
这段代码通过linux的系统命令ps来分析cpu的使用情况,代码如下:
packagemain
import(
"bytes"
"log"
"os/exec"
"strconv"
"strings"
)
typeProcessstruct{
pidint
cpufloat64
}
funcmain(){
cmd:=exec.Command("ps","aux")
varoutbytes.Buffer
cmd.Stdout=&out
err:=cmd.Run()
iferr!=nil{
log.Fatal(err)
}
processes:=make([]*Process,0)
for{
line,err:=out.ReadString('\n')
iferr!=nil{
break;
}
tokens:=strings.Split(line,"")
ft:=make([]string,0)
for_,t:=range(tokens){
ift!=""&&t!="\t"{
ft=append(ft,t)
}
}
log.Println(len(ft),ft)
pid,err:=strconv.Atoi(ft[1])
iferr!=nil{
continue
}
cpu,err:=strconv.ParseFloat(ft[2],64)
iferr!=nil{
log.Fatal(err)
}
processes=append(processes,&Process{pid,cpu})
}
for_,p:=range(processes){
log.Println("Process",p.pid,"takes",p.cpu,"%oftheCPU")
}
}
希望本文所述对大家的Go语言程序设计有所帮助。