Linux下,怎樣查看系統(tǒng)啟動和運行時間
1.uptime命令
輸出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00
2.查看/proc/uptime文件計算系統(tǒng)啟動時間
cat /proc/uptime
輸出: 5113396.94 575949.85
第一數(shù)字即是系統(tǒng)已運行的時間5113396.94 秒,運用系統(tǒng)工具date即可算出系統(tǒng)啟動時間
代碼:?全選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文件計算系統(tǒng)運行時間
代碼:?全選cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系統(tǒng)已運行:%d天%d時%d分%d秒",run_days,run_hour,run_minute,run_second)}'
輸出:系統(tǒng)已運行:59天4時13分9秒
?
?
1:?who?命令查看
????? who -b 查看最后一次系統(tǒng)啟動的時間。
????? who -r 查看當前系統(tǒng)運行時間
[root@DB-Server ~]# who -b
???????? system boot May 11 09:27
?
2: last? reboot
如下所示last reboot可以看到Linux系統(tǒng)歷史啟動的時間。 重啟一下操作系統(tǒng)后,然后
[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系統(tǒng)啟動的時間
?
[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后表示系統(tǒng)到目前運行了多久時間。反過來推算系統(tǒng)重啟時間
?
4:w? 命令查看
?
?
?
4: w命令查看
?
如下截圖所示,up后表示系統(tǒng)到目前運行了多久時間。反過來推算系統(tǒng)重啟時間
?
?
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
?
?
?
?下面的是程序的方式 ,在程序開發(fā)的時候會比較有用。摘自http://www.cnblogs.com/Anker/p/3527609.html
?
1、前言
時間對操作系統(tǒng)來說非常重要,從內(nèi)核級到應(yīng)用層,時間的表達方式及精度各部相同。linux內(nèi)核里面用一個名為jiffes的常量來計算時間戳。應(yīng)用層有time、getdaytime等函數(shù)。今天需要在應(yīng)用程序獲取系統(tǒng)的啟動時間,百度了一下,通過sysinfo中的uptime可以計算出系統(tǒng)的啟動時間。
2、sysinfo結(jié)構(gòu)
sysinfo結(jié)構(gòu)保持了系統(tǒng)啟動后的信息,主要包括啟動到現(xiàn)在的時間,可用內(nèi)存空間、共享內(nèi)存空間、進程的數(shù)目等。man?sysinfo得到結(jié)果如下所示:
?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????????????};
3、獲取系統(tǒng)啟動時間
通過sysinfo獲取系統(tǒng)啟動到現(xiàn)在的秒數(shù),用當前時間減去這個秒數(shù)即系統(tǒng)的啟動時間。程序如下所示:
?1?#include2?#include3?#include4?#include5? ?6?static?int?print_system_boot_time() ?7?{ ?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:%sn", 14?????????errno,?strerror(errno)); 15?????return?-1; 16?????} 17?????time(&cur_time); 18?????if?(cur_time?>?info.uptime)?{ 19?????boot_time?=?cur_time?-?info.uptime; 20?????} 21?????else?{ 22?????boot_time?=?info.uptime?-?cur_time; 23?????} 24?????ptm?=?gmtime(&boot_time); 25?????printf("System?boot?time:?%d-%-d-%d?%d:%d:%dn",?ptm->tm_year?+?1900, 26?????????ptm->tm_mon?+?1,?ptm->tm_mday,?ptm->tm_hour,?ptm->tm_min,?ptm->tm_sec); 27????return?0;? 28?} 29? 30?int?main() 31?{ 32?????if?(print_system_boot_time()?!=?0)?{ 33?????return?-1; 34?????} 35?????return?0; 36?}
測試結(jié)果如下所: