linux获取系统启动时间
Linux 获取 时间 系统启动
2023-09-14 08:59:45 时间
1、前言
时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。今天需要在应用程序获取系统的启动时间,百度了一下,通过sysinfo中的uptime可以计算出系统的启动时间。
2、sysinfo结构
sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用内存空间、共享内存空间、进程的数目等。man sysinfo得到结果如下所示:
![复制代码](http://common.cnblogs.com/images/copycode.gif)
1 struct sysinfo { 2 long uptime; /* Seconds since boot */ 3 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ 4 unsigned long totalram; /* Total usable main memory size */ 5 unsigned long freeram; /* Available memory size */ 6 unsigned long sharedram; /* Amount of shared memory */ 7 unsigned long bufferram; /* Memory used by buffers */ 8 unsigned long totalswap; /* Total swap space size */ 9 unsigned long freeswap; /* swap space still available */ 10 unsigned short procs; /* Number of current processes */ 11 char _f[22]; /* Pads structure to 64 bytes */ 12 };
![复制代码](http://common.cnblogs.com/images/copycode.gif)
3、获取系统启动时间
通过sysinfo获取系统启动到现在的秒数,用当前时间减去这个秒数即系统的启动时间。程序如下所示:
![复制代码](http://common.cnblogs.com/images/copycode.gif)
1 #include stdio.h 2 #include sys/sysinfo.h 3 #include time.h 4 #include errno.h 6 static int print_system_boot_time() 8 struct sysinfo info; 9 time_t cur_time = 0; 10 time_t boot_time = 0; 11 struct tm *ptm = NULL; 12 if (sysinfo( info)) { 13 fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s\n", 14 errno, strerror(errno)); 15 return -1; 17 time( cur_time); 18 if (cur_time info.uptime) { 19 boot_time = cur_time - info.uptime; 21 else { 22 boot_time = info.uptime - cur_time; 24 ptm = gmtime( boot_time); 25 printf("System boot time: %d-%-d-%d %d:%d:%d\n", ptm- tm_year + 1900, 26 ptm- tm_mon + 1, ptm- tm_mday, ptm- tm_hour, ptm- tm_min, ptm- tm_sec); 27 return 0; 30 int main() 32 if (print_system_boot_time() != 0) { 33 return -1; 35 return 0; 36 }
![复制代码](http://common.cnblogs.com/images/copycode.gif)
测试结果如下所:
工作总结之服务器时间不同步导致平台验证失败及Linux系统时间同步方法 在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系。系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不间断。
【看表情包学Linux】Redirect 重定向 | 时间相关指令 | 文件查找 | 打包与压缩(二) 本章仍然是继续对Linux 常用指令进行介绍,将讲解重定向、时间相关的指令、文件查找和打包压缩等指令。我们将初次理解 Linux下一切皆文件 这一概念,我将通过一个有趣的故事去讲解它。
【看表情包学Linux】Redirect 重定向 | 时间相关指令 | 文件查找 | 打包与压缩(一) 本章仍然是继续对Linux 常用指令进行介绍,将讲解重定向、时间相关的指令、文件查找和打包压缩等指令。我们将初次理解 Linux下一切皆文件 这一概念,我将通过一个有趣的故事去讲解它。
相关文章
- Linux文件夹覆盖解决方案(linux文件夹覆盖)
- 如何在Linux系统中修改默认语言(linux修改系统语言)
- 『Linux进程管理之会话控制』(linux进程会话)
- Linux 优雅调整系统时间(linux调整系统时间)
- Linux获取系统版本的简易方法(linux获取系统版本)
- 之旅 开启 Linux 命令行之旅(linux开启命令行)
- 一键获取Linux系统镜像,轻松安装体验(linux系统镜像下载)
- GUI的应用展现Linux之美:基于GUI的应用(linux基于)
- 输入Linux e下获取键盘输入的实现方法(linux获取键盘)
- Linux获取线程ID的简单方法(linux取线程id)
- 服务Linux系统中实现NTP同步服务指南(linux系统Ntp)
- Linux获取主机名的最佳实践(linux获取主机名)
- 主机报表Linux主机报表生成:获取更多信息(生成linux)
- Linux下串口打印实现方法(linux串口打印)
- Linux系统下时间比较实践(linux时间比较)
- Linux 任务调度:最佳时机选择(linux调度时机)
- 2020年国内Linux发行版排行榜(国内linux排名)
- Linux 的精妙时间片(linux时间片)
- 安装Linux下LZMA压缩库(linux安装lzma)
- 协作Linux团队:实现协作之美(linux团队)
- 命令的应用Tar命令在Linux上的神奇应用(linux下tar)
- 打造高效稳定的Linux时间同步服务器(linux时间同步服务器)
- 重新解析域名:在Linux上刷新DNS缓存(linux刷新dns缓存)
- Linux系统下配置网络时间的步骤(linux网络时间设置)
- Linux时间排序命令详解(linux时间排序命令)
- 深入探究Linux集群架构(linux集群架构)
- 解决Linux服务器性能卡顿的有效方法(linux服务器卡顿)
- Linux查看网卡型号的简便技巧(linux 查看网卡型号)