/// Get system boot time /// should fail on not-linux package core import ( "bufio" "fmt" "os" "strconv" "strings" "time" ) type Time = time.Time func GetBootTime() (Time, error) { file, err := os.Open("/proc/stat") if err != nil { return Time{}, err } scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() s_btime := "btime " if strings.HasPrefix(line, s_btime) { btime, err := strconv.ParseInt(line[len(s_btime):], 10, 64) if err != nil { return Time{}, err } return time.Unix(btime, 0), nil } } if err := scanner.Err(); err != nil { return Time{}, err } return Time{}, fmt.Errorf("btime (boot time) not found in /proc/stat") }