linux分析日志文件

一、常见的日志文件

/var/log/wtmp,一个用户每次登录进入和退出时间的永久纪录
/var/log/btmp,纪录失败的纪录
/var/run/utmp,纪录当前登录的每个用户 

查看方法 last -f  utmp

last 命令:
功能说明:列出目前与过去登入系统的用户相关信息。
  语  法:last [-adRx][-f ][-n ][帐号名称...][终端机编号...]
  补充说明:单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
  参  数:
  -a  把从何处登入系统的主机名称或IP地址,显示在最后一行。
  -d  将IP地址转换成主机名称。
  -f   指定记录文件。
  -n 或-  设置列出名单的显示列数。
  -R  不显示登入系统的主机名称或IP地址。
  -x  显示系统关机,重新开机,以及执行等级的改变等信息


 lastlog           纪录最近几次成功登录的事件和最后一次不成功的登录 

使用方法:lastlog


     access-log         纪录HTTP/web的传输 

   acct/pacct         纪录用户命令 

   aculog           纪录MODEM的活动 

   messages          从syslog中记录信息(有的链接到syslog文件) 

   sudolog           纪录使用sudo发出的命令 

   sulog           纪录使用su命令的使用 
   syslog           从syslog中记录信息(通常链接到messages文件) 

   xferlog           纪录FTP会话

二、配置文件

服务syslogd来复制日志文件的管理

配置文件主要有两个:/etc/syslog.conf和/etc/logrotate.conf


[root@localhost ~]# vi /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console


# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages


# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure


# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog




# Log cron stuff
cron.*                                                  /var/log/cron


# Everybody gets emergency messages
*.emerg                                                 *


# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler


# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

基本语法

服务类型.等级

例如mail.info

.表示比它搞得等级都记录下来,.=只要改等级的,*表示所有的

[root@localhost ~]# vi /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
weekly


# keep 4 weeks worth of backlogs
rotate 4


# create new (empty) log files after rotating old ones
create


# uncomment this if you want your log files compressed
#compress


# RPM packages drop log rotation information into this directory
include /etc/logrotate.d


# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}


# system-specific logs may be also be configured here.

一般把轮转的程序到卸载logrotate.d里面,

[root@localhost ~]# vi /etc/logrotate.d/syslog 

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

logrotate 也可以直接执行 后直接跟配置文件就可以了。
-v 给出详细信息
-d debug模式,不更改日志文件内容 模拟执行
-f 强制执行,忽略所有规则

三、日志管理命令

wtmp和utmp文件都是二进制文件,它们不能被诸如tail之类的命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac等命令来使用这两个文件包含的信息。

◆who命令

who命令查询utmp文件并报告当前登录的每个用户。who的默认输出包括用户名、终端类型、登录日期及远程主机。例如,键入who命令,然后按回车键,将显示如下内容:

chyang pts/0 Aug 18 15:06 
ynguo pts/2 Aug 18 15:32 
ynguo pts/3 Aug 18 13:55 
lewis pts/4 Aug 18 13:35 
ynguo pts/7 Aug 18 14:12 
ylou pts/8 Aug 18 14:15 

如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。

◆w命令

w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如,键入w命令,然后按回车键,将显示如下内容:

3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27 
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash 
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 w 
lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash 
lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail 
ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash 

◆users命令

users命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如,键入users命令,然后按回车键,将显示如下内容:

chyang lewis lewis ylou ynguo ynguo

◆last命令

last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:

chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49) 
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14) 
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40) 
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03) 
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12) 

如果指明了用户,那么last只报告该用户的近期活动,例如,键入last ynguo命令,然后按回车键,将显示如下内容:

ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30) 
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44) 
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16) 
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25) 
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12) 
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11) 
ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55) 

◆ac命令

ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),如果不使用标志,则报告总的时间。例如,键入ac命令,然后按回车键,将显示如下内容:

total 5177.47

键入ac -d命令,然后按回车键,将显示每天的总的连接时间:

Aug 12 total 261.87 
Aug 13 total 351.39 
Aug 14 total 396.09 
Aug 15 total 462.63 
Aug 16 total 270.45 
Aug 17 total 104.29 
Today total 179.02 

键入ac -p命令,然后按回车键,将显示每个用户的总的连接时间:

ynguo 193.23 
yucao 3.35 
rong 133.40 
hdai 10.52 
zjzhu 52.87 
zqzhou 13.14 
liangliu 24.34 
total 5178.24 

◆lastlog命令

lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示**Never logged**。注意需要以root身份运行该命令,例如:

rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000 
dbb **Never logged in** 
xinchen **Never logged in** 
pb9511 **Never logged in** 
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000 

另外,可加一些参数,例如,"last -u 102"命令将报告UID为102的用户;"last -t 7"命令表示限制为上一周的报告。


你可能感兴趣的:(日志)