40 lines
678 B
Go
40 lines
678 B
Go
package nux
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/toolkits/pkg/file"
|
|
)
|
|
|
|
func SystemUptime() (days, hours, mins int64, err error) {
|
|
var content string
|
|
content, err = file.ToTrimString("/proc/uptime")
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
fields := strings.Fields(content)
|
|
if len(fields) < 2 {
|
|
err = fmt.Errorf("/proc/uptime format not supported")
|
|
return
|
|
}
|
|
|
|
secStr := fields[0]
|
|
var secF float64
|
|
secF, err = strconv.ParseFloat(secStr, 64)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
minTotal := secF / 60.0
|
|
hourTotal := minTotal / 60.0
|
|
|
|
days = int64(hourTotal / 24.0)
|
|
hours = int64(hourTotal) - days*24
|
|
mins = int64(minTotal) - (days * 60 * 24) - (hours * 60)
|
|
|
|
return
|
|
}
|