本文实例讲述了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语言程序设计有所帮助。 (编辑:海南站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|