Skip to content

Commit 2adcfa0

Browse files
committed
add uptime()
1 parent 305e21a commit 2adcfa0

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

main_test.go

+7
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,11 @@ func TestMetrics(t *testing.T) {
9898
fmt.Println("==============ss -s===============")
9999
fmt.Println(SocketStatSummary())
100100

101+
fmt.Println("=============uptime:==============")
102+
days, hours, mins, err := SystemUptime()
103+
if err != nil {
104+
fmt.Println("error:", err)
105+
} else {
106+
fmt.Printf("%d days, %d hours, %d mins\n", days, hours, mins)
107+
}
101108
}

system.go

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package nux
2+
3+
import (
4+
"fmt"
5+
"github.com/toolkits/file"
6+
"strconv"
7+
"strings"
8+
)
9+
10+
func SystemUptime() (days, hours, mins int64, err error) {
11+
var content string
12+
content, err = file.ToTrimString("/proc/uptime")
13+
if err != nil {
14+
return
15+
}
16+
17+
fields := strings.Fields(content)
18+
if len(fields) < 2 {
19+
err = fmt.Errorf("/proc/uptime format not supported")
20+
return
21+
}
22+
23+
secStr := fields[0]
24+
var secF float64
25+
secF, err = strconv.ParseFloat(secStr, 64)
26+
if err != nil {
27+
return
28+
}
29+
30+
minTotal := secF / 60.0
31+
hourTotal := minTotal / 60.0
32+
33+
days = int64(hourTotal / 24.0)
34+
hours = int64(hourTotal) - days*24
35+
mins = int64(minTotal) - (days * 60 * 24) - (hours * 60)
36+
37+
return
38+
}

0 commit comments

Comments
 (0)