0%

centos开关机日志分析

缘起

在工作中发现有获取linux具体开关机时间和类型的需求,可以通过分析/var/log/wtmp日志文件得到。
通过last -x -F可以将/var/log/wtmp输出以下格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root     pts/1        172.16.3.245     Sun Jun 12 10:14:47 2016 - Tue Jun 14 08:34:31 2016 (1+22:19)
root pts/0 172.16.3.245 Sun Jun 12 10:14:37 2016 - Tue Jun 14 08:34:25 2016 (1+22:19)
root ttyS0 Sun Jun 12 10:14:24 2016 - down (5+03:49)
runlevel (to lvl 3) 3.10.0 Sun Jun 12 10:14:17 2016 - Fri Jun 17 14:03:40 2016 (5+03:49)
root pts/1 172.16.3.145 Sun Jun 12 10:13:57 2016 - Sun Jun 12 10:13:57 2016 (00:00)
reboot system boot 3.10.0 Sun Jun 12 10:13:18 2016 - Fri Jun 17 14:03:40 2016 (5+03:50)
shutdown system down 3.10.0 Sun Jun 12 10:12:51 2016 - Sun Jun 12 10:13:18 2016 (00:00)
root pts/1 172.16.3.145 Sun Jun 12 10:12:47 2016 - down (00:00)
root pts/20 172.16.3.211 Sun Jun 12 10:07:58 2016 - down (00:04)
root pts/19 172.16.3.119 Sun Jun 12 10:07:50 2016 - down (00:05)

...
root pts/3 172.16.3.145 Sun Jun 12 09:10:15 2016 - down (01:02)
root pts/2 172.16.3.145 Sun Jun 12 09:10:15 2016 - down (01:02)
root tty1 Sun Jun 12 09:09:37 2016 - down (01:03)
runlevel (to lvl 3) 3.10.0 Sun Jun 12 09:09:22 2016 - Sun Jun 12 10:12:51 2016 (01:03)
root pts/1 172.16.3.245 Sun Jun 12 09:09:10 2016 - Sun Jun 12 10:12:47 2016 (01:03)
reboot system boot 3.10.0 Sun Jun 12 09:07:24 2016 - Sun Jun 12 10:12:51 2016 (01:05)
root pts/14 172.16.3.211 Sun Jun 12 08:57:19 2016 - crash (00:10)
root pts/7 172.16.3.245 Sun Jun 12 08:52:13 2016 - crash (00:15)
root pts/11 172.16.3.245 Sun Jun 12 08:51:38 2016 - crash (00:15)
root pts/10 172.16.3.211 Sun Jun 12 08:46:06 2016 - crash (00:21)
root pts/9 172.16.3.30 Sun Jun 12 08:41:33 2016 - crash (00:25)

性空

具体一条记录

用户 终端类型 登录ip 开始时间 结束时间 持续时长
root pts/5 172.16.3.129 Fri Jun 17 14:03:50 2016 Fri Jun 17 14:03:42 2016 (00:00)

每一行为一条会话记录,有以下6个部分。

  1. 用户名
    • linux用户名
    • reboot 系统关机或重启
    • shutdown 关机
  2. 终端类型
    • tty 本机终端
    • pst 远程登录终端
  3. 登录ip
  4. 开始时间(可靠)
  5. 结束时间(不可靠)
    • 具体时间:结束时间,若不正常关机,此时间就不准确
    • down:系统关机退出
    • crash:系统不正常关机退出
  6. 持续时长
    • (5+03:49) 日,小时,分

分析开关机时间思路

  1. 首先找到开始为reboot的行,获取此行的“开始时间”得到这一次的开机时间。
  2. 如果reboot行的下一行为shutdown,则为正常关机,获取此行的“开始时间”得到关机时间。若持续时间为(00:00)则为重启。
  3. 如果reboot行的下一行不为shutdown,则为不正常关机,下面的登录会话的“结束时间”必然伴随着crash。找到最近的一条crash记录,拿到这条记录的“开始时间”和“持续时长”,相加即是关机时间。