- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2018-9-29 13:31:55
|
显示全部楼层
1.uptime命令1 D- a. B: I: c. D1 N/ U0 M2 T2 q
输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00% ]) ~% N- y- o: {: @
( E0 j5 y6 N+ t
# Q5 [0 q! H: [; Q* o4 T2.查看/proc/uptime文件计算系统启动时间
7 q: n% M& s0 e1 ]5 W; H$ x6 zcat /proc/uptime
* g5 K& V) V. L6 {4 I0 p输出: 5113396.94 575949.85% l* n- E! H( A1 Z0 w+ | }
第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间5 e) O7 c1 }4 p6 ~* o) s% E& u
, e) K, }- j$ w3 o
代码:
# w' j+ _# X# T[root@localhost ~]# date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"4 K6 s# Z& C6 S. C$ w
2017-10-27 14:32:356 I& F, o( b5 S1 ?1 u+ i; r$ R8 D' Q
3.查看/proc/uptime文件计算系统运行时间
m2 z6 t+ M/ O5 R: M- c" T$ Z0 C) }8 W% D
代码: 9 K8 `$ l, `' R- W9 B* a7 I
[root@localhost ~]# 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)}'! Z0 U2 f) \" {8 w: D' X- W
系统已运行:0天0时24分34秒
0 ^* b6 Y6 V' E1 {1: who 命令查看
) T! I3 V. N, I/ B( G& {2 j
+ A- M7 e! _2 X+ O/ B) B: _ who -b 查看最后一次系统启动的时间。* j, X; N, s" s" H9 z1 \2 A2 U
: E' `8 \5 W' Q( z7 c0 |! g
1
/ q" Q9 p% c1 b L1 r; s L. h$ [5 O2
" Q$ d1 {1 s+ w; ?' s q4 a: d[root@localhost ~]# who -b9 r1 [# o" m% W) @! o
system boot 2017-10-27 14:32% W1 x5 Y' i8 t0 n' D$ n
who -r 查看当前系统运行时间
0 L( [. t1 |' k2 L3 F) D- d6 g3 T" X
1
% K+ Y! E2 j+ C Q$ \2" X& I7 P6 \; W
[root@localhost ~]# who -r
/ Q- n) z5 @. A5 z( T# `: W run-level 3 2017-10-27 14:336 K! A' |& k( W! U/ A l( _
2: last reboot
* [! N8 e- P( w9 J5 j1 h* C3 v# [+ h
. ^5 Q2 }+ {" L0 _$ X如下所示last reboot可以看到Linux系统历史启动的时间。 重启一下操作系统后,然后 n% j. l/ p6 {. j% o- F; Y- b; k
, x$ k4 L8 ^' C
[root@DB-Server ~]# last reboot
6 k/ e8 J y% p. `. c- n
* b: S8 V$ o q1
2 V: O& G% N9 ^2 G2 `$ |4 }- _8 h7 C* O1 Y
3# U6 y2 E/ s/ D; B
4
, T& Y$ j! s& o2 P' X" Z$ E[root@localhost ~]# last reboot( P* C7 k5 k/ R* }2 ?* r
reboot system boot 3.10.0-327.el7.x Fri Oct 27 14:32 - 14:59 (00:26)
" a- _ N1 v4 l8 L9 O b
% U1 L+ |0 H" `% uwtmp begins Fri Oct 27 14:32:39 2017. k7 o9 W# I2 J7 k- r
#如果只需要查看最后一次Linux系统启动的时间& H. `$ O4 U; |1 k
$ S& X5 ?, T6 Z3 }" |[root@DB-Server ~]# last reboot | head -1
2 D0 `1 K ^; Z' C8 M) U- Freboot; l" X9 g- Q6 ]3 L6 _
system boot 2.6.9-42.ELsmp Thu May 29 15:25 (00:08)
+ _) M S! O0 s5 H+ x1 F3:TOP命令查看
- F2 I: Y3 L% k7 }# w1 I7 {% x2 i# T! }3 e0 F' Z
如下截图所示,up后表示系统到目前运行了多久时间。反过来推算系统重启时间- n- d% C* s e
) x: R% _/ g' C) }: U: {[root@localhost ~]# who -b
q# _' R& F) H. t0 c% z, D9 x system boot 2017-10-27 14:32
2 d. Y3 ~' u$ C. h6 S {$ l1 f7 btop - 15:00:29 up 27 min, 2 users, load average: 0.00, 0.01, 0.05
9 u8 t, s+ p+ T9 i2 E* D" O+ sTasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie+ J9 F& ?( s0 c: k1 z
%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
# {. Y2 d( m; Z, R' a/ K" gKiB Mem : 8176008 total, 7892856 free, 131764 used, 151388 buff/cache( d0 l2 J5 K% R3 H1 n& o6 |
KiB Swap: 8257532 total, 8257532 free, 0 used. 7868548 avail Mem , N2 \: E- u, f+ N' i
8 z7 `0 @6 x4 a/ c2 @' {9 ~ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ( ^* ^1 J& K" ^9 a
1855 root 20 0 0 0 0 S 0.3 0.0 0:00.33 kworker/0:2 ( q# O; Z0 s, {' m! M* y% a
1 root 20 0 44496 7168 2612 S 0.0 0.1 0:02.32 systemd
! B' g( \/ u: u" U, ?2 [* q 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 4 K m+ h4 A! S/ k5 ~
3 root 20 0 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/0
V- ^) T4 U4 \8 ?1 U 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
. Y1 \3 S4 E" t6 N9 X# }* U 6 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kworker/u4:0 2 [0 r2 d( z* ?) z' Z# C
7 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/0
$ W& @: h1 p# B3 V5 g( t9 H; v2 J 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
+ q1 t1 @, t& r1 | 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 & \7 s( F& Q! L5 n; r
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1 4 W* ]. w4 x. B, t- @% C c) @
11 root 20 0 0 0 0 S 0.0 0.0 0:00.33 rcu_sched
+ Q# a& M* O' U$ U 12 root 20 0 0 0 0 S 0.0 0.0 0:00.12 rcuos/0
% [) [2 x; z5 W# b0 ]( j 13 root 20 0 0 0 0 S 0.0 0.0 0:00.37 rcuos/1 2 j0 c- y5 a4 h$ X9 C7 {$ b
14 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0
/ b1 d6 O! e( ~; r# H 15 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
7 A U! M4 N5 h5 ^) Z 16 root rt 0 0 0 0 S 0.0 0.0 0:00.08 migration/1
g; J6 K. |: ^* t 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
2 B0 D/ N |' F: @- k 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H 7 s, m: ]! X& x7 I) Q, l
4: w命令查看& }1 i. i; x- K4 r4 R
& l( _1 v! l* W! G
如下截图所示,up后表示系统到目前运行了多久时间。反过来推算系统重启时间
7 |$ H! R0 M& l7 P: R5 `5 j7 h* f( t' Q+ t4 x7 P- B
1/ l4 j& N( p$ I
2
% G8 k& {. u0 m: H6 v b3 K7 R+ N# `9 b
43 w( s8 x, x2 j1 _0 s" g! o' l* c
5
: m4 y1 J; G# e8 V5 L[root@localhost ~]# w$ [0 g1 j" ?# N4 X4 K4 ~
15:00:56 up 28 min, 2 users, load average: 0.00, 0.01, 0.054 a$ i! `. s* I# u
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT: L* Y _$ B3 t
root tty1 14:33 25:52 0.07s 0.07s -bash/ H; g$ p: g- n _ P
root pts/0 10.0.100.55 14:37 0.00s 0.10s 0.00s w9 e+ [: @. _* @& X
5:uptime 命令查看
, l3 |1 w2 Z1 R/ S$ h% o1 f* P1 L* [
[root@localhost ~]# uptime. _) Y& r- l/ i$ X# w% C8 p3 ^
15:01:40 up 29 min, 2 users, load average: 0.00, 0.01, 0.05
" \% ]1 k9 B8 g3 J4 T, u( [, d6: 查看/proc/uptime/ p2 a( G6 O- g' e8 ~
( \# x$ @/ _, l1 L- e
方法一:
9 C0 C5 m$ O. [5 r! V! s- J
; ~, W9 x1 ?: w$ w( k1 K1 }; Z- d[root@localhost ~]# cat /proc/uptime
% |9 _+ }: \: l$ }+ {1778.05 3520.28
( A& U1 y: }! P: J5 W方法二:1 A w. N% j; \4 a5 S
/ z+ ?% s& A$ ?8 T b3 |" ][root@localhost ~]# date -d "`cut -f1 -d. /proc/uptime` seconds ago"
" o, ]. z% A4 f9 b: |Fri Oct 27 14:32:35 CST 2017
0 ~4 a) [ j% ~) v. M. U4 Q7 W8 i 方法三:
5 y8 [2 t. q/ j9 h9 M: D2 D
7 J+ O0 X' J. o }: @[root@localhost ~]# date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
) t1 G' J+ q! S8 m2017-10-27 14:32:35
( B0 c1 @9 _; ?2 g' C * W! J* o2 L6 u2 c
# r) u& Y) A$ `; j# D1、前言
" b8 N( T, Z" ?
" Q4 G% ~9 {; ]+ O8 |7 k 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。
, o7 [& s: u2 _2 n% `
& v' `: ]1 n$ \5 M3 ^在应用程序获取系统的启动时间,通过sysinfo中的uptime可以计算出系统的启动时间。
& I# m/ l; {7 ?% g1 H/ J" R& d" s0 M) @! \# e2 Q6 x% P
2、sysinfo结构
+ R( d3 h; [9 N r8 L' Q
- v& n/ D) m [2 M H, Y sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用内存空间、共享内存空间、进程的数目等。man sysinfo得到结果如下所示:
' S( U8 p/ U1 G
" m8 d* J! U1 E复制代码. H# D" y9 i, p4 B# |
复制代码. U& v2 e6 E4 |' A: h- @3 P
1 struct sysinfo {9 ]% `/ d+ o( n( n
2 long uptime; /* Seconds since boot */: {7 W/ K3 r8 a, Z1 I* u
3 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */& y8 K+ j. M9 t! d
4 unsigned long totalram; /* Total usable main memory size */0 t, }$ ?# u3 G' k* g" R
5 unsigned long freeram; /* Available memory size */% m# Q5 Y7 j8 O
6 unsigned long sharedram; /* Amount of shared memory */
5 Y/ D! d" J" w7 e3 D9 q 7 unsigned long bufferram; /* Memory used by buffers */6 V- e9 c& X6 i" x6 `! z
8 unsigned long totalswap; /* Total swap space size */0 ^* U2 P& Q4 C3 @6 Y
9 unsigned long freeswap; /* swap space still available */
8 y7 ]3 Z6 q" |3 y& c* L Z10 unsigned short procs; /* Number of current processes */
3 E% f, G# ]9 X% f3 e11 char _f[22]; /* Pads structure to 64 bytes */
. w! p/ D& V2 O12 };
* J1 N5 i. ?6 |8 `3 G& P# Q6 }复制代码. o3 {, m7 S% O; T& P. G L- \
复制代码$ S& h* S' g+ l. S& a
3、获取系统启动时间$ i5 A( h" S" W6 D6 ~+ V
/ O/ e+ L \! e; t/ ?0 V 通过sysinfo获取系统启动到现在的秒数,用当前时间减去这个秒数即系统的启动时间。程序如下所示:, N" x8 \7 R, i8 I
' y7 T6 B0 Y. B
复制代码8 z) J$ `% o/ ]
复制代码" m4 q4 g) t( Y& ^# M2 U9 z
1 #include <stdio.h>9 x, W6 f0 M5 S$ x7 u
2 #include <sys/sysinfo.h>+ i- b/ }/ m: l% b5 v: w
3 #include <time.h>- s% A! U! t$ h+ J0 p5 ]3 h
4 #include <errno.h>* B- G7 y" {5 f' Z+ h
5 & n0 j% V/ T* b0 j
6 static int print_system_boot_time()
, [( N) G! M! |3 o 7 {
5 }4 l" F" e7 Q' @0 S+ z) G# g0 Y 8 struct sysinfo info;
) ?$ U( |- V: Y. u# H( a( K) F 9 time_t cur_time = 0;- q0 c) b9 U4 x9 h9 _% A
10 time_t boot_time = 0;
7 C4 C/ k+ f$ m) P11 struct tm *ptm = NULL;0 b7 M/ f; N/ Y! }0 n9 s. \" d
12 if (sysinfo(&info)) {
3 \+ C! s' W2 n& y; G2 \$ g13 fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s\n",
, Z9 i8 i' j; m" {14 errno, strerror(errno));( g1 N! v# C+ y" y0 e
15 return -1;6 n2 a; x4 d# t
16 }
; X/ r4 f# o! f& @9 S17 time(&cur_time);( C0 E+ |( b0 \
18 if (cur_time > info.uptime) {3 z" p5 K$ ?$ E# ?3 O" |
19 boot_time = cur_time - info.uptime;
% X5 A5 C5 R3 W) A! l' @20 }
" @# @* f8 L7 B4 I4 @+ W21 else {
1 ] @- k2 r4 i3 O22 boot_time = info.uptime - cur_time;
. T, K ]+ K2 H" w( n) c+ d23 }) y# m4 `8 Q/ i
24 ptm = gmtime(&boot_time);* j. ]8 h/ p( ~6 a
25 printf("System boot time: %d-%-d-%d %d:%d:%d\n", ptm->tm_year + 1900,3 a- v1 X7 [5 B$ e+ f5 W
26 ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
$ d7 J5 _$ h, \27 return 0;
2 A" a3 F! `4 S- n) C: C! E# L28 }
# [ `. ]# a$ r5 C29 4 D+ V( | O" A/ v
30 int main()* h7 `: W7 N0 }! J Q( d1 H
31 {
- a& m) o9 L) `32 if (print_system_boot_time() != 0) {& o D. `8 Y3 d( D
33 return -1;5 q* r+ O0 S: ?' c% Y% S# L
34 }0 F' r) q- W4 I
35 return 0;
i! m6 e9 p6 e36 }1 a9 H/ a- s6 h) m; L6 N, l
复制代码
5 S R% Q5 B. h5 t% z; W复制代码
6 Q8 J R) v2 |. \! a! O) \测试结果如下所:
. E1 {7 Z0 p4 i2 ?! [7 [
6 P# h9 W) r3 g9 D7 l) I: N7 V% G+ @3 Q/ w
' K* z; D) S G+ C% i
% h* {5 }0 a6 b) m
; {" ~( A3 I. E: m#查看系统安装时间
2 m/ L5 F6 \' F* J' X" C+ b, a+ T' h7 G
[root@control1 ~]# tune2fs -l /dev/sda1 | grep create
% b; _3 w) f/ I0 h) h& R; X8 x' e( WFilesystem created: Tue Aug 15 16:52:06 2017& j4 l% Q/ |9 v. e* Y" N* T! T
" e- x8 ^5 x% [' |
9 N# d( o9 K4 t: l
7 H) n$ D( ~4 I) q4 Z# l#通过查看系统创建账号时间来判断系统安装日期5 n7 `, b6 {( I6 Y0 _3 s
& w2 R6 F6 l- o9 |& i- ?% f
[root@zabbix-server ~]# passwd -S zabbix
8 [; P. I6 W- q+ v. x7 czabbix LK 2017-06-28 -1 -1 -1 -1 (密码已被锁定。) |
|