linux getuptime 系统启动时间
package webtest
/*
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <stdlib.h>
*/
import "C"
import (
"fmt"
"io/ioutil"
"strconv"
"strings"
"time"
)
var (
Uptime int64 // 系统启动时间戳
scClkTck = int64(C.sysconf(C._SC_CLK_TCK))
)
func Init() {
buf, err := ioutil.ReadFile("/proc/uptime")
Uptime = time.Now().Unix()
if err != nil {
fmt.Println("read file /proc/uptime faile 1")
}
if fields := strings.Fields(string(buf)); len(fields) == 2 {
start, err := strconv.ParseFloat(fields[0], 10)
if err == nil {
Uptime = time.Now().Unix() - int64(start)//- sys.Uptime
}else{
fmt.Println("read file /proc/uptime faile 2")
}
}
}
func ProcessStartTime(pid int) (ts time.Time) {
buf, err := ioutil.ReadFile(fmt.Sprintf("/proc/%v/stat", pid))
if err != nil {
return time.Unix(0, 0)
}
if fields := strings.Fields(string(buf)); len(fields) > 22 {
start, err := strconv.ParseInt(fields[21], 10, 0)
if err == nil {
if scClkTck > 0 {
return time.Unix(Uptime+(start/scClkTck), 0)
}
return time.Unix(Uptime+(start/100), 0)
}
}
return time.Unix(0, 0)
}
参考:
https://coding3min.com/597.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探