Linux下如何查看系統啟動時間和運行時間

  • 2016-5-6 09:58
  • PHP二次開發
  • 閱讀(1772)
  • 評論(3
  • 來源:互聯網
  • 摘要: 1.uptime命令輸出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.002.查看/proc/uptime文件計算系統啟動時間cat /proc/uptime輸出: 5113396.94 575949.85第一數字即是系統已運行的時間5113396.9 ...
    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即可算出系統啟動時間

    代碼: 全選
        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文件計算系統運行時間

    代碼: 全選
        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秒

    1: who 命令查看

          who -b 查看最后一次系統啟動的時間。

          who -r 查看當前系統運行時間

    [[email protected] ~]# who -b

             system boot May 11 09:27


    2: last  reboot

    如下所示last reboot可以看到Linux系統歷史啟動的時間。 重啟一下操作系統后,然后

    [[email protected] ~]# 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系統啟動的時間

    [[email protected] ~]# last reboot | head -1

    reboot

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


    3:TOP命令查看

     
        如下截圖所示,up后表示系統到目前運行了多久時間。反過來推算系統重啟時間


    4: w命令查看

    如下截圖所示,up后表示系統到目前運行了多久時間。反過來推算系統重啟時間

    5:uptime 命令查看

    6: 查看/proc/uptime

    [[email protected] ~]# cat /proc/uptime

    1415.59 1401.42

    [[email protected] ~]# date -d "`cut -f1 -d. /proc/uptime` seconds ago"

    Thu May 29 15:24:57 CST 2014

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

     
    2014-05-29 15:24:57


    1、前言

      時間對操作系統來說非常重要,從內核級到應用層,時間的表達方式及精度各部相同。linux內核里面用一個名為jiffes的常量來計算時間戳。應用層有time、getdaytime等函數。今天需要在應用程序獲取系統的啟動時間,百度了一下,通過sysinfo中的uptime可以計算出系統的啟動時間。

    2、sysinfo結構

      sysinfo結構保持了系統啟動后的信息,主要包括啟動到現在的時間,可用內存空間、共享內存空間、進程的數目等。man sysinfo得到結果如下所示:

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


    3、獲取系統啟動時間

      通過sysinfo獲取系統啟動到現在的秒數,用當前時間減去這個秒數即系統的啟動時間。程序如下所示:
     #include <stdio.h>
      #include <sys/sysinfo.h>
      #include <time.h>
      #include <errno.h>
     
      static int print_system_boot_time()
      {
          struct sysinfo info;
          time_t cur_time = 0;
         time_t boot_time = 0;
         struct tm *ptm = NULL;
         if (sysinfo(&info)) {
         fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s\n",
             errno, strerror(errno));
         return -1;
         }
         time(&cur_time);
         if (cur_time > info.uptime) {
         boot_time = cur_time - info.uptime;
         }
         else {
         boot_time = info.uptime - cur_time;
         }
         ptm = gmtime(&boot_time);
         printf("System boot time: %d-%-d-%d %d:%d:%d\n", ptm->tm_year + 1900,
             ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
        return 0;
     }
     
     int main()
     {
         if (print_system_boot_time() != 0) {
         return -1;
         }
         return 0;
     }

    測試結果如下所:



    PHP技術交流QQ群:422137578

    除非注明,文章均為 PHP二次開發 原創,轉載請注明本文地址:http://www.fujvln.live/article-2215-1.html

    相關閱讀

    發表評論

    最新評論

    引用 PHP二次開發   2016-5-7 21:04
    小污師: 博主的博客要不要自適應一下手機端?手機端看起來確實不怎么舒服,不放大看基本上看不清文字
    呵呵,有空做下
    引用 小污師   2016-5-7 09:50
    博主的博客要不要自適應一下手機端?手機端看起來確實不怎么舒服,不放大看基本上看不清文字
    引用 網撲蜘   2016-5-6 19:19
    百度過來的。

    查看全部評論(3)

    用戶名:  *

    郵 箱:  *

    網 址: 注意加上“http://”哦!