欲买桂花同载酒,荒泷天下第一斗。|

janbar

园龄:4年6个月 粉丝:29 关注:10

2020-11-30 19:37 阅读 463 评论 0 推荐

获取Win和Linux系统启动时间,类似uptime功能,用于判断是否修改过系统时间

前言

有时候需要判断系统是否有修改过时间,最简单的方法就是获取当前时间A,然后sleep X秒,然后获取 时间B,如果 时间B - 时间A ≠ X,那就表示系统时间被修改过。
上面方案是可行的,但时间A延时X在进程重启时不太好判断系统时间是否修改过时间。
已经有接口可以获取系统运行秒数,那么可以用当前时间减去运行秒数,得到系统启动时间,如果下一次计算出来的系统启动时间有变化则可以认为修改过系统时间。

测试代码

下面是我的测试代码,相关方法我已经写到我常用的库里面了。对外提供接口为获取系统运行时间(单位:秒),以及获取系统启动时间(为时间戳,如果没有修改时间则每次获取都一样)。

copy
package main import ( "fmt" "time" "github.com/jan-bar/golibs/timer" ) func main() { fmt.Printf("run:%d,uptime:%s\n", timer.GetUpTime(), time.Unix(timer.GetSysUpTime(), 0).Format("2006-01-02 15:04:05")) }

Win测试

需要对比win的启动时间可以使用systeminfo命令,下图就是运行结果,程序输出系统运行时间和启动时间点。

Linux测试

在Linux下系统运行时间是保存在cat /proc/uptime的第一个值,因此可以用命令date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
得到Linux的启动时间,如下图所示。

总结

本文提供了获取Win和Linux获取系统运行时间的方法,都是调用相关方法,不是用啥命令行获取的,效率还是杠杠的。
用法不止用来判断是否修改过系统时间,还可以用来做某些系统展示使用,总之系统提供的方法我们在合适的时候使用就行咯。

posted @   janbar  阅读(463)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~

FAVOURITE

点击右上角即可分享
微信分享提示
*✧⁺˚⁺ପ(๑・ω・)੭ु⁾⁾ 好好学习天天向上
进入亮色模式
进入亮色模式

FAVOURITE