Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 430|回复: 0

[默认分类] Linux下如何查看系统启动时间和运行时间

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-11 16:43:26 | 显示全部楼层 |阅读模式
    1.uptime命令
    输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00

    2.查看/proc/uptime文件计算系统启动时间
    cat /proc/uptime
    输出: 5113396.94 575949.85
    第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间


      代码:
      全选


    1. date -d "$(awk -F. "{print $1}" /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
    复制代码



    输出: 2008-11-09 11:50:31

    3.查看/proc/uptime文件计算系统运行时间


      代码:
      全选


    1. cat /proc/uptime| awk -F. "{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}"
    复制代码



    输出:系统已运行:59天4时13分9秒


    下面的摘自 http://www.cnblogs.com/kerrycode/p/3759395.html
    1: who 命令查看
          who -b 查看最后一次系统启动的时间。
          who -r 查看当前系统运行时间
    [root@DB-Server ~]# who -b
             system boot May 11 09:27



    2: last  reboot
    如下所示last reboot可以看到Linux系统历史启动的时间。 重启一下操作系统后,然后
    [root@DB-Server ~]# last reboot
    reboot
    system boot 2.6.9-42.ELsmp Thu May 29 15:25 (00:07)

    reboot system boot 2.6.9-42.ELsmp Sun May 11 09:27 (18+05:55)

    wtmp begins Mon May 5 16:18:57 2014



    如果只需要查看最后一次Linux系统启动的时间

    [root@DB-Server ~]# last reboot | head -1

    reboot
    system boot 2.6.9-42.ELsmp Thu May 29 15:25 (00:08)



    3:TOP命令查看

        如下截图所示,up后表示系统到目前运行了多久时间。反过来推算系统重启时间

    4:w  命令查看



    4: w命令查看

    如下截图所示,up后表示系统到目前运行了多久时间。反过来推算系统重启时间
    1. [code][url=https://images0.cnblogs.com/blog/73542/201405/291621129475962.png][img]http://www.itdaan.com/imgs/7/0/3/2/75/80334aec64f95f56cd44c577d1e9815e.jpe[/img][/url]
    复制代码
    [/code]

    5:uptime 命令查看





    6: 查看/proc/uptime

    [root@DB-Server ~]# cat /proc/uptime

    1415.59 1401.42

    [root@DB-Server ~]# date -d "`cut -f1 -d. /proc/uptime` seconds ago"

    Thu May 29 15:24:57 CST 2014

    [root@DB-Server ~]# date -d "$(awk -F. "{print $1}" /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"

    2014-05-29 15:24:57
    1. [url=https://images0.cnblogs.com/blog/73542/201405/291621202283971.png][img]http://www.itdaan.com/imgs/6/2/4/9/47/b22958922130cfd377ad1c0730d73f7e.jpe[/img][/url]
    复制代码


    下面的是程序的方式 ,在程序开发的时候会比较有用。摘自http://www.cnblogs.com/Anker/p/3527609.html

    1、前言
      时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。今天需要在应用程序获取系统的启动时间,百度了一下,通过sysinfo中的uptime可以计算出系统的启动时间。
    2、sysinfo结构
      sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用内存空间、共享内存空间、进程的数目等。man sysinfo得到结果如下所示:


      

    1. [b] 1 struct sysinfo {
    2. 2                long uptime;             /* Seconds since boot */
    3. 3                unsigned long loads[3];  /* 1, 5, and 15 minute load averages */
    4. 4                unsigned long totalram;  /* Total usable main memory size */
    5. 5                unsigned long freeram;   /* Available memory size */
    6. 6                unsigned long sharedram; /* Amount of shared memory */
    7. 7                unsigned long bufferram; /* Memory used by buffers */
    8. 8                unsigned long totalswap; /* Total swap space size */
    9. 9                unsigned long freeswap;  /* swap space still available */
    10. 10                unsigned short procs;    /* Number of current processes */
    11. 11                char _f[22];             /* Pads structure to 64 bytes */
    12. 12            };[/b]
    复制代码

      


    3、获取系统启动时间
      通过sysinfo获取系统启动到现在的秒数,用当前时间减去这个秒数即系统的启动时间。程序如下所示:


      

    1. [b] 1 #include <stdio.h>
    2. 2 #include <sys/sysinfo.h>
    3. 3 #include <time.h>
    4. 4 #include <errno.h>
    5. 5
    6. 6 static int print_system_boot_time()
    7. 7 {
    8. 8     struct sysinfo info;
    9. 9     time_t cur_time = 0;
    10. 10     time_t boot_time = 0;
    11. 11     struct tm *ptm = NULL;
    12. 12     if (sysinfo(&info)) {
    13. 13     fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s\n",
    14. 14         errno, strerror(errno));
    15. 15     return -1;
    16. 16     }
    17. 17     time(&cur_time);
    18. 18     if (cur_time > info.uptime) {
    19. 19     boot_time = cur_time - info.uptime;
    20. 20     }
    21. 21     else {
    22. 22     boot_time = info.uptime - cur_time;
    23. 23     }
    24. 24     ptm = gmtime(&boot_time);
    25. 25     printf("System boot time: %d-%-d-%d %d:%d:%d\n", ptm->tm_year + 1900,
    26. 26         ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
    27. 27    return 0;
    28. 28 }
    29. 29
    30. 30 int main()
    31. 31 {
    32. 32     if (print_system_boot_time() != 0) {
    33. 33     return -1;
    34. 34     }
    35. 35     return 0;
    36. 36 }[/b]
    复制代码

      


    测试结果如下所:
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 09:00 , Processed in 0.437593 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表