Linux中获取系统运行时间的多种方法详解

 更新时间:2025年03月11日 10:34:57   作者:lepton_yang  
在开发 、测试和运维中,获取系统运行时间是一个很重要的参数指标,本文为大家整理了一些常用的获取系统时间的方法,希望对大家有所帮助

在开发 、测试和运维中,获取系统运行时间是一个很重要的参数指标,下面是常用的获取系统时间的方法,以SKYLAB的SKW3000路由模组的运行时间为例进行说明:

一.通过指令获取

获取系统运行时间的指令为uptime,具体操作输出如下:

这个方法在运维中运用,方便直观。但是在开发过程中使用此命令获取系统时间,需要提取字段中的内容,不如通过其他方式获取方便,下面是文件获取的方法。

二.通过文件获取

在linux系统中,文件/proc/time包含了系统运行总秒数和空闲时间,内容如下图所示,前面为系统运行时间,后面为CPU处于空闲的时间:

[系统运行总秒数]:系统的运行时间信息,以S为单位,精确到小数点,表示系统从开机到当前时刻所经历的时长,图示为:933370.06;

[空闲时间]:它反映了系统没有进行任何有效工作,CPU处于空闲等待状态的累计时长,图示为:1787850.84。

在开发中,如日志记录等,可以通过读取文件的方式获取系统运行时间。下面是两种通过文件获取系统运行时间的方法。

(1)通过Shell获取系统时间的方法

下面是具体的源码:

#!/bin/sh
 
uptime_seconds=$(cat /proc/uptime | cut -d. -f1)
 
days=$((uptime_seconds / (24 * 60 * 60)))
uptime_seconds=$((uptime_seconds % (24 * 60 * 60)))
hours=$((uptime_seconds / (60 * 60)
uptime_seconds=$((uptime_seconds % (60 * 60)))
minutes=$((uptime_seconds / 60))
seconds=$((uptime_seconds % 60))
 
echo "系统运行时间: $days 天 $hours 小时 $minutes 分钟 $seconds 秒"

运行结果如下:

(2)下面是通过C语言获取系统时间的方法

具体源码如下:

#include <stdio.h>
#include <stdlib.h>
 
void get_run_time(char *time)
{
    FILE *fp;
    double uptime_seconds;
    int days, hours, minutes, seconds;
 
    // 打开 /proc/uptime 文件
    fp = fopen("/proc/uptime", "r");
    if (fp == NULL) {
        perror("无法打开 /proc/uptime 文件");
        return;
    }
 
    // 读取系统运行的总秒数
    fscanf(fp, "%lf", &uptime_seconds);
    fclose(fp);
 
    // 计算天、时、分、秒
    days = (int)uptime_seconds / (24 * 60 * 60);
    uptime_seconds = (int)uptime_seconds % (24 * 60 * 60);
    hours = (int)uptime_seconds / (60 * 60);
    uptime_seconds = (int)uptime_seconds % (60 * 60);
    minutes = (int)uptime_seconds / 60;
    seconds = (int)uptime_seconds % 60;
 
    if (days > 0) {
        sprintf(time, "%dday%dh%dm%ds", days, hours, minutes, seconds);
    } else if(hours > 0) {
        sprintf(time, "%dh%dm%ds", hours, minutes, seconds);
    } else if(minutes > 0) {
        sprintf(time, "%dm%ds", minutes, seconds);
    } else {
        sprintf(time, "%ds", seconds);
    }
}
 
int main(void)
{
    char run_time[32] = {0};
    get_run_time(run_time);
    printf("Time:%s\r\n", run_time);
}

运行结果如下:

三.知识扩展

除了上文的方法,小编还为大家整理了一些其他在Linux中查看系统运行时间的方法,希望对大家有所帮助

在Linux中,查看系统的运行时间(也称为系统启动时间)可以通过多种命令实现。以下是一些常用的方法:

1. uptime命令

uptime命令提供了一个快速的概览,显示了系统运行时间、当前时间、用户数量以及系统的负载平均值。

uptime

输出示例:

21:34:02 up 10 days,  2:58,  1 user,  load average: 0.00, 0.01, 0.05

这表示系统已经运行了10天2小时58分钟。

2. systemctl命令

在使用systemd的系统上,systemd是初始化系统和服务的管理器,你可以使用systemctl命令查看系统的运行时间。

systemctl list-timers

这将列出所有的定时器,包括systemd的启动定时器。你可以通过查找boot或start关键字来确定系统运行时间。

3. 查看/proc/uptime文件

/proc/uptime文件包含了系统运行时间的信息,以秒为单位。

cat /proc/uptime

输出示例:

887563.92 887563.92

第一列的数字表示自系统启动以来的总秒数。你可以将其转换为更易读的格式,例如:

echo "scale=2; 887563.92 / 60 / 60 / 24" | bc

4. 查看/var/log中的日志文件

在某些Linux发行版中,/var/log目录下的日志文件(如messages、syslog或boot.log)可以提供系统的启动时间。

grep -i "boot" /var/log/messages

或者,如果你的系统使用的是journalctl:

journalctl --list-boots

5. 使用last命令

last命令显示了系统的关机和启动日志。

last | grep reboot

这将显示重启和关机的记录。

注意事项

  • 某些命令可能需要超级用户权限才能运行。
  • 日志文件的位置和名称可能会根据不同的Linux发行版和配置有所不同。
  • 如果日志被旋转或删除,使用日志文件查看系统运行时间的方法可能不可行。

到此这篇关于Linux中获取系统运行时间的多种方法详解的文章就介绍到这了,更多相关Linux获取系统运行时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux和GNU系统的关系详解

    Linux和GNU系统的关系详解

    大家好,本篇文章主要讲的是Linux和GNU系统的关系详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • linux系统下oracle11gR2静默安装的经验分享

    linux系统下oracle11gR2静默安装的经验分享

    这篇文章主要介绍了linux系统下oracle11gR2静默安装的经验, 所有操作无需使用图形界面. 静默安装能减少安装出错的可能性, 也能大大加快安装速度。有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • 安装Ubuntu和ssh远程连接的设置方式

    安装Ubuntu和ssh远程连接的设置方式

    文章介绍了在Ubuntu操作系统中进行远程连接配置的方法,具体步骤包括:安装并配置SSH服务,设置静态IP地址,配置远程桌面服务(VNC或RDP),以及解决root用户SSH远程登录的问题
    2025-03-03
  • Linux通用java程序启动脚本代码实例

    Linux通用java程序启动脚本代码实例

    这篇文章主要介绍了Linux通用java程序启动脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 在Linux中查看所有正在运行的进程的方法

    在Linux中查看所有正在运行的进程的方法

    这篇文章主要介绍了在Linux中查看所有正在运行的进程的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 在 CentOS 8 上安装Jenkins的方法

    在 CentOS 8 上安装Jenkins的方法

    这篇文章主要介绍了在 CentOS 8 上安装Jenkins的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 详解Linux中搭建常用服务器

    详解Linux中搭建常用服务器

    本篇文章主要介绍了Linux中搭建常用服务器,主要包括telnet、DHCP、DNS、sendmail、FTP、web、samba有兴趣的可以了解一下。
    2016-12-12
  • Linux系统清除缓存的方法总结

    Linux系统清除缓存的方法总结

    在本篇文章里小编给大家整理了关于Linux系统清除缓存的方法和实例内容,需要的朋友们参考下。
    2020-01-01
  • Centos搭建图形化界面VNC的方法

    Centos搭建图形化界面VNC的方法

    在使用腾讯云的centos云服务器时如果你需要使用图形化界面,比如图形界面安装oracle,应该怎么做?今天就和大家分享下图形界面的安装和vnc的搭建,来解决刚才提到的问题
    2015-10-10
  • CentOS 6.5中利用yum搭建LNMP环境的步骤详解

    CentOS 6.5中利用yum搭建LNMP环境的步骤详解

    这篇文章主要给大家介绍了关于在CentOS 6.5中利用yum搭建LNMP环境的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12

最新评论