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即可算出系统启动时间
- 代码:?
[[email?protected] ~]
# date -d "$(awk -F. ‘{print $1}‘ /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
2017-10-27 14:32:35
|
3.查看/proc/uptime文件计算系统运行时间
-
代码:?
[[email?protected] ~]
# 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)}‘
系统已运行:0天0时24分34秒
|
1:?who?命令查看
????? who -b 查看最后一次系统启动的时间。
1
2
|
[[email?protected] ~]
# who -b
?????????
system boot? 2017-10-27 14:32
|
????? who -r 查看当前系统运行时间
1
2
|
[[email?protected] ~]
# who -r
?????????
run-level 3? 2017-10-27 14:33
|
2: last? reboot
如下所示last reboot可以看到Linux系统历史启动的时间。 重启一下操作系统后,然后
[[email?protected] ~]# last reboot
1
2
3
4
|
[[email?protected] ~]
# last reboot
reboot?? system boot? 3.10.0-327.el7.x Fri Oct 27 14:32 - 14:59? (00:26)???
?
wtmp begins Fri Oct 27 14:32:39 2017
|
#如果只需要查看最后一次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后表示系统到目前运行了多久时间。反过来推算系统重启时间
[[email?protected] ~]
# who -b
?????????
system boot? 2017-10-27 14:32
top
- 15:00:29 up 27 min,? 2
users
,? load average: 0.00,0.05
Tasks:? 99 total,?? 1 running,? 98 sleeping,?? 0 stopped,?? 0 zombie
%Cpu(s):? 0.0 us,? 0.2 sy,? 0.0 ni,99.8
id
,? 0.0 wa,? 0.0 hi,? 0.0 si,? 0.0 st
KiB Mem :? 8176008 total,? 7892856
free
,?? 131764 used,?? 151388 buff
/cache
KiB Swap:? 8257532 total,? 8257532
free
,??????? 0 used.? 7868548 avail Mem
?
??
PID USER????? PR? NI??? VIRT??? RES??? SHR S? %CPU %MEM???? TIME+ COMMAND????????????????????????????
?
1855 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.3? 0.0?? 0:00.33 kworker
/0
:2????????????????????????
????
1 root????? 20?? 0?? 44496?? 7168?? 2612 S?? 0.0? 0.1?? 0:02.32 systemd????????????????????????????
????
2 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 kthreadd???????????????????????????
????
3 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.05 ksoftirqd
/0 ????????????????????????
????
5 root?????? 0 -20?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 kworker
/0
:0H???????????????????????
????
6 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.03 kworker
/u4
:0???????????????????????
????
7 root????? rt?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.06 migration
/0 ????????????????????????
????
8 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 rcu_bh?????????????????????????????
????
9 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 rcuob
/0 ????????????????????????????
???
10 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 rcuob
/1 ????????????????????????????
???
11 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.33 rcu_sched??????????????????????????
???
12 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.12 rcuos
/0 ????????????????????????????
???
13 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.37 rcuos
/1 ????????????????????????????
???
14 root????? rt?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.01 watchdog
/0 ?????????????????????????
???
15 root????? rt?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 watchdog
/1 ?????????????????????????
???
16 root????? rt?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.08 migration
/1 ????????????????????????
???
17 root????? 20?? 0?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 ksoftirqd
/1 ????????????????????????
???
19 root?????? 0 -20?????? 0????? 0????? 0 S?? 0.0? 0.0?? 0:00.00 kworker
/1
:0H?????????
|
4: w命令查看
如下截图所示,up后表示系统到目前运行了多久时间。反过来推算系统重启时间
1
2
3
4
5
|
[[email?protected] ~]
# w
?
15:00:56 up 28 min,0.05
USER???? TTY????? FROM???????????? [email?protected]?? IDLE?? JCPU?? PCPU WHAT
root???? tty1????????????????????? 14:33?? 25:52?? 0.07s? 0.07s -
bash
root???? pts
/0 ???
10.0.100.55????? 14:37??? 0.00s? 0.10s? 0.00s w
|
5:uptime 命令查看
[[email?protected] ~]
# uptime
?
15:01:40 up 29 min,0.05
|
6: 查看/proc/uptime
方法一:
[[email?protected] ~]
# cat /proc/uptime
1778.05 3520.28
|
方法二:
[[email?protected] ~]
# date -d "`cut -f1 -d. /proc/uptime` seconds ago"
Fri Oct 27 14:32:35 CST 2017
|
?方法三:
[[email?protected] ~]
# date -d "$(awk -F. ‘{print $1}‘ /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
2017-10-27 14:32:35
|
?
1、前言
时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。
在应用程序获取系统的启动时间,通过sysinfo中的uptime可以计算出系统的启动时间。
2、sysinfo结构
sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用内存空间、共享内存空间、进程的数目等。man?sysinfo得到结果如下所示:
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、获取系统启动时间
通过sysinfo获取系统启动到现在的秒数,用当前时间减去这个秒数即系统的启动时间。程序如下所示:
1 #include <stdio.h> 2 #include <sys/sysinfo.h> 3 #include <time.h> 4 #include <errno.h> 5 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 }
测试结果如下所:
?
#查看系统安装时间
[[email?protected] ~]# tune2fs -l /dev/sda1 | grep create
Filesystem created: Tue Aug 15 16:52:06 2017
?
#通过查看系统创建账号时间来判断系统安装日期
[[email?protected] ~]
# passwd -S zabbix
zabbix LK 2017-06-28 -1 -1 -1 -1 (密码已被锁定。
|