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
<code># w -help</code>
<code>w: invalid option -- </code><code>'e'</code>
<code>usage: w -hlsufV [user]</code>
<code> </code><code>-h skip header</code>
<code> </code><code>-l long listing (default)</code>
<code> </code><code>-s short listing</code>
<code> </code><code>-u ignore uid of processes</code>
<code> </code><code>-f toggle FROM field (default on)</code>
<code> </code><code>-V display version</code>
<code># w</code>
<code> </code><code>21:48:53 up 36 days, 18:04, 1 user, load average: 0.00, 0.00, 0.00</code>
<code>USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT</code>
<code>yucz pts</code><code>/1</code> <code>116.6.101.193 21:16 0.00s 0.01s 0.00s sshd: yucz [priv]</code>
(2)who指令顯示目前登用使用者
14
15
16
17
18
19
20
21
22
23
<code># who --help</code>
<code>Usage: </code><code>who</code> <code>[OPTION]... [ FILE | ARG1 ARG2 ]</code>
<code>Print information about </code><code>users</code> <code>who</code> <code>are currently logged </code><code>in</code><code>.</code>
<code> </code><code>-a, --all same as -b -d --login -p -r -t -T -u</code>
<code> </code><code>-b, --boot </code><code>time</code> <code>of last system boot</code>
<code> </code><code>-d, --dead print dead processes</code>
<code> </code><code>-H, --heading print line of column headings</code>
<code> </code><code>-l, --login print system login processes</code>
<code> </code><code>--lookup attempt to canonicalize hostnames via DNS</code>
<code> </code><code>-m only </code><code>hostname</code> <code>and user associated with stdin</code>
<code> </code><code>-p, --process print active processes spawned by init</code>
<code> </code><code>-q, --count all login names and number of </code><code>users</code> <code>logged on</code>
<code> </code><code>-r, --runlevel print current runlevel</code>
<code> </code><code>-s, --short print only name, line, and </code><code>time</code> <code>(default)</code>
<code> </code><code>-t, --</code><code>time</code> <code>print last system clock change</code>
<code> </code><code>-T, -w, --mesg add user's message status as +, - or ?</code>
<code> </code><code>-u, --</code><code>users</code> <code>list </code><code>users</code> <code>logged </code><code>in</code>
<code> </code><code>--message same as -T</code>
<code> </code><code>--writable same as -T</code>
<code> </code><code>--help display this help and </code><code>exit</code>
<code> </code><code>--version output version information and </code><code>exit</code>
<code># who</code>
<code>yucz pts</code><code>/1</code> <code>2015-02-25 21:16 (116.6.101.193)</code>
(3)ac指令來顯示使用者連接配接時間
<code>#ac --help</code>
<code>Usage: ac [-dhpVy] [-f <</code><code>file</code><code>>] [people] ...</code>
<code>#ac -d root</code>
<code>Aug 8 total 0.00</code>
<code>Aug 11 total 5.62</code>
<code>Aug 12 total 2.21</code>
<code>Aug 13 total 7.74</code>
(4)finger指令顯示使用者的連接配接狀态和其他資訊
<code>#finger root</code>
<code>Login: root Name: root</code>
<code>Directory: </code><code>/root</code> <code>Shell: </code><code>/bin/bash</code>
<code>Last login Wed Aug 13 03:26 2014 (CDT) on pts</code><code>/4</code> <code>from 116.6.101.193</code>
<code>No mail.</code>
<code>No Plan.</code>
lastb/lastlog/last指令主要是讀取/var/log/btmp檔案資訊,看下面的示例
(1)last指令可以檢視本地計算機使用者的登陸情況,同時可以看到系統的啟動和重新開機狀态;
<code>#last | tail -10</code>
<code>root pts</code><code>/0</code> <code>116.6.101.193 Tue Aug 12 04:42 - down (00:49) </code>
<code>root pts</code><code>/1</code> <code>116.6.101.193 Mon Aug 11 21:05 - 23:19 (02:14) </code>
<code>root pts</code><code>/1</code> <code>116.6.101.193 Mon Aug 11 21:02 - 21:04 (00:02) </code>
<code>root pts</code><code>/0</code> <code>116.6.101.193 Mon Aug 11 20:39 - 00:58 (04:19) </code>
<code>reboot system boot 2.6.32-431.23.3. Fri Aug 8 04:11 - 05:31 (4+01:20) </code>
<code>root pts</code><code>/0</code> <code>10.0.80.185 Fri Aug 8 04:08 - 04:09 (00:00) </code>
<code>reboot system boot 2.6.32-431.23.3. Fri Aug 8 04:08 - 04:09 (00:01) </code>
<code>reboot system boot 2.6.32-431.el6.x Thu Aug 7 23:01 - 04:06 (05:05)</code>
(2)lastlog檢視使用者最後登陸系統的狀态
<code># lastlog -h</code>
<code>Usage: lastlog [options]</code>
<code>Options:</code>
<code> </code><code>-b, --before DAYS print only lastlog records older than DAYS</code>
<code> </code><code>-h, --help display this help message and </code><code>exit</code>
<code> </code><code>-t, --</code><code>time</code> <code>DAYS print only lastlog records </code><code>more</code> <code>recent than DAYS</code>
<code> </code><code>-u, --user LOGIN print lastlog record of the specified LOGIN</code>
<code># lastlog -u root</code>
<code>Username Port From Latest</code>
<code>root pts</code><code>/4</code> <code>116.6.101.193 Wed Aug 13 03:26:29 -0500 2014</code>
(3)lastb主要顯示登陸失敗的情況
<code># lastb</code>
<code>yucz </code><code>ssh</code><code>:notty 116.6.101.193 Wed Feb 25 21:16 - 21:16 (00:00) </code>
<code>yucz </code><code>ssh</code><code>:notty 116.6.101.193 Thu Feb 12 00:49 - 00:49 (00:00) </code>
<code>yucz </code><code>ssh</code><code>:notty 116.6.101.193 Mon Feb 9 02:29 - 02:29 (00:00) </code>
<code>yucz </code><code>ssh</code><code>:notty 184.173.65.76 Fri Feb 6 03:52 - 03:52 (00:00) </code>
<code>yucz </code><code>ssh</code><code>:notty 184.173.65.76 Fri Feb 6 03:51 - 03:51 (00:00) </code>
<code>yucz </code><code>ssh</code><code>:notty 116.6.101.193 Wed Feb 4 03:33 - 03:33 (00:00)</code>
本文轉自 bannerpei 51CTO部落格,原文連結:http://blog.51cto.com/281816327/1615459,如需轉載請自行聯系原作者