forked from toolkits/nux
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloadavg.go
41 lines (33 loc) · 771 Bytes
/
loadavg.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package nux
import (
"fmt"
"github.com/toolkits/file"
"strconv"
"strings"
)
type Loadavg struct {
Avg1min float64
Avg5min float64
Avg15min float64
}
func (this *Loadavg) String() string {
return fmt.Sprintf("<1min:%f, 5min:%f, 15min:%f>", this.Avg1min, this.Avg5min, this.Avg15min)
}
func LoadAvg() (*Loadavg, error) {
loadAvg := Loadavg{}
data, err := file.ToTrimString("/proc/loadavg")
if err != nil {
return nil, err
}
L := strings.Fields(data)
if loadAvg.Avg1min, err = strconv.ParseFloat(L[0], 64); err != nil {
return nil, err
}
if loadAvg.Avg5min, err = strconv.ParseFloat(L[1], 64); err != nil {
return nil, err
}
if loadAvg.Avg15min, err = strconv.ParseFloat(L[2], 64); err != nil {
return nil, err
}
return &loadAvg, nil
}