首页 > 系统相关 >linux getuptime 系统启动时间

linux getuptime 系统启动时间

时间:2022-11-01 11:15:26浏览次数:52  
标签:Uptime 系统启动 err start fields linux getuptime Unix time

 

 

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

 

标签:Uptime,系统启动,err,start,fields,linux,getuptime,Unix,time
From: https://www.cnblogs.com/rebrobot/p/16847012.html

相关文章

  • linux下 ubantu 使用笔记本电脑摄像头,v4l2采集摄像头数据
    1虚拟机添加usb控制器,注意选择兼容3.1  2添加移动设备 3在ubantu中输入命令行cheese检测摄像头是否工作正常4gcc编译如下代码,注意根据摄像头支持的格式......
  • Linux学习之进程
    通过ps命令可以查看到command为ttyn的就是它对应的进程,对应linux/dev/目录下的一个文件。进程进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令......
  • linux 中打包命令tar的使用
     001、打包[root@pc1test3]#lsa.txtb.txtc.mapdf110tmp1[root@pc1test3]#tar-cfall.tar*##打包[root@pc1test3]#lsall.tara.txtb.txt......
  • Linux系统--判断文件、文件夹是否存在(Linux)
    Linux系统--判断文件、文件夹是否存在(Linux)一、判断文件是否存在例如:想判断/home/user/user-c/document.txt文件是否存在1、创建shell脚本文件命令:touchjudge_f.shjud......
  • linux api lstat
    #include<sys/types.h>#include<sys/stat.h>#include<time.h>#include<stdio.h>#include<stdlib.h>#include<sys......
  • Linux下普通用户登陆提示 bash-4.2# 的解决方案记录
    记录一次在linux下登陆普通用户提示bash-4.2#的解决方案。经过网上查阅资料一翻得知,由于当初创建用户之后,看到用户home目录下的隐藏文件,对其进行了删除,才导致的这种问......
  • Linux 之Bash命令--文件或文件夹分发
    Linux之Bash命令--文件或文件夹分发实验环境:linux主机1:10.8.198.66linux主机2:10.8.198.227一、SCP介绍scp是securecopy的缩写,scp是linux系统下基于ssh登......
  • 如何解读Linux Kernel OOPS信息
    OOPS信息解读root@firefly:~/mnt/module#insmodoops_module.ko[867.140514]UnabletohandlekernelNULLpointerdereferenceatvirtualaddress00000000[8......
  • [I.MX6UL] Linux 内核移植(一)
    NXP官方原版Linux4.1.15_2.1.0源码:https://cloud.189.cn/t/JZriMvVNJJBf一定要先安装:sudoapt-getinstalllzop终端输入:mkdirIMX6ULL将上面的Linux4.1.15_2.1.0源码......
  • [I.MX6UL] Linux 内核移植(三) 网络驱动修改 配置文件另存为
    使能8线EMMC驱动Linux内核驱动里面EMMC默认是4线模式的,4线模式肯定没有8线模式的速度快,所以将EMMC的驱动修改为8线模式。修改方法很简单,直接修改设备树即可......