Linux操作系统中有三种主要的日志子系统:

(1)连接时间日志

(2)进程统计日志

(3)系统和服务日志

连接时间日志和进程统计日志由rsyslog(旧版是syslog)日志服务驱动,系统和服务日志由相对应的网络服务驱动和管理;


连接时间日志

  连接时间日志由/var/run/utmp和/var/log/wtmp两个文件记录,系统自动更新;这两个文件不能通过cat命令来查看,但是可以通过w/who/ac/finger/last/lastlog等命令查看。(关于/var/run/utmp的字段定义放在/usr/include/utmp.h中,有兴趣可以仔细研究一下)


w/who/ac/finger命令主要是读取/var/run/utmp文件信息,看下面的示例

(1)w命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# w -help
w: invalid option --  'e'
usage: w -hlsufV [user]
     -h    skip header
     -l    long listing (default)
     -s    short listing
     -u    ignore uid of processes
     -f    toggle FROM field (default on)
     -V    display version
# w
  21:48:53 up 36 days, 18:04,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
yucz     pts /1     116.6.101.193    21:16    0.00s  0.01s  0.00s sshd: yucz [priv]

(2)who命令显示当前登用用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# who --help
Usage:  who  [OPTION]... [ FILE | ARG1 ARG2 ]
Print information about  users  who  are currently logged  in .
   -a, --all         same as -b -d --login -p -r -t -T -u
   -b, --boot         time  of last system boot
   -d, --dead        print dead processes
   -H, --heading     print line of column headings
   -l, --login       print system login processes
       --lookup      attempt to canonicalize hostnames via DNS
   -m                only  hostname  and user associated with stdin
   -p, --process     print active processes spawned by init
   -q, --count       all login names and number of  users  logged on
   -r, --runlevel    print current runlevel
   -s, --short       print only name, line, and  time  (default)
   -t, -- time         print last system clock change
   -T, -w, --mesg    add user's message status as +, - or ?
   -u, -- users        list  users  logged  in
       --message     same as -T
       --writable    same as -T
       --help     display this help and  exit
       --version  output version information and  exit
# who
yucz     pts /1         2015-02-25 21:16 (116.6.101.193)

(3)ac命令来显示用户连接时间

1
2
3
4
5
6
7
#ac --help
Usage: ac [-dhpVy] [-f < file >] [people] ...
#ac -d root
Aug  8  total        0.00
Aug 11  total        5.62
Aug 12  total        2.21
Aug 13  total        7.74

(4)finger命令显示用户的连接状态和其他信息

1
2
3
4
5
6
#finger root
Login: root                             Name: root
Directory:  /root                         Shell:  /bin/bash
Last login Wed Aug 13 03:26 2014 (CDT) on pts /4  from 116.6.101.193
No mail.
No Plan.


lastb/lastlog/last命令主要是读取/var/log/btmp文件信息,看下面的示例

(1)last命令可以查看本地计算机用户的登陆情况,同时可以看到系统的启动和重启状态;

1
2
3
4
5
6
7
8
9
#last | tail -10
root     pts /0         116.6.101.193    Tue Aug 12 04:42 - down   (00:49)    
root     pts /1         116.6.101.193    Mon Aug 11 21:05 - 23:19  (02:14)    
root     pts /1         116.6.101.193    Mon Aug 11 21:02 - 21:04  (00:02)    
root     pts /0         116.6.101.193    Mon Aug 11 20:39 - 00:58  (04:19)    
reboot   system boot  2.6.32-431.23.3. Fri Aug  8 04:11 - 05:31 (4+01:20)   
root     pts /0         10.0.80.185      Fri Aug  8 04:08 - 04:09  (00:00)    
reboot   system boot  2.6.32-431.23.3. Fri Aug  8 04:08 - 04:09  (00:01)    
reboot   system boot  2.6.32-431.el6.x Thu Aug  7 23:01 - 04:06  (05:05)

 

(2)lastlog查看用户最后登陆系统的状态

1
2
3
4
5
6
7
8
9
10
# lastlog -h
Usage: lastlog [options]
Options:
   -b, --before DAYS             print only lastlog records older than DAYS
   -h, --help                    display this help message and  exit
   -t, -- time  DAYS               print only lastlog records  more  recent than DAYS
   -u, --user LOGIN              print lastlog record of the specified LOGIN
# lastlog -u root
Username         Port     From             Latest
root             pts /4     116.6.101.193    Wed Aug 13 03:26:29 -0500 2014

(3)lastb主要显示登陆失败的情况

1
2
3
4
5
6
7
# lastb
yucz      ssh :notty    116.6.101.193    Wed Feb 25 21:16 - 21:16  (00:00)    
yucz      ssh :notty    116.6.101.193    Thu Feb 12 00:49 - 00:49  (00:00)    
yucz      ssh :notty    116.6.101.193    Mon Feb  9 02:29 - 02:29  (00:00)    
yucz      ssh :notty    184.173.65.76    Fri Feb  6 03:52 - 03:52  (00:00)    
yucz      ssh :notty    184.173.65.76    Fri Feb  6 03:51 - 03:51  (00:00)    
yucz      ssh :notty    116.6.101.193    Wed Feb  4 03:33 - 03:33  (00:00)