Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
要好好掌握Linux的使用,日志相关内容一定要熟悉掌握一下。

Linux 位于/var/log/常用日志文件

(因Linux不同,日志也会有不同,如dpkg.log只存在于Debian系统)

  1. /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。//常用日志
  2. /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
  3. /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。 //常用日志
  4. /var/log/boot.log — 包含系统启动时的日志。 //常用日志
  5. /var/log/daemon.log — 包含各种系统后台守护进程日志信息。 //常用日志
  6. /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。 //常用日志
  7. /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
  8. /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。//常用日志
  9. /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
  10. /var/log/user.log — 记录所有等级用户信息的日志。//常用日志
  11. /var/log/Xorg.x.log — 来自X的日志信息。
  12. /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
  13. /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。//常用日志
  14. /var/log/cups — 涉及所有打印信息的日志。
  15. /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
  16. /var/log/yum.log — 包含使用yum安装的软件包信息。
  17. /var/log/cron — 每当cron进程开始一个工作时就会将相关信息记录在这个文件中。
  18. /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
  19. /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。 //常用日志 连接时间日志
  20. /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。

(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,二进制文件,需要使用lastlog命令查看。

/var/log基于系统应用还包含的其它日志目录:

/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务。

除了手动存档和清除这些日志文件以外,还可以使用logrotate在文件达到一定大小后自动删除。可以尝试用vi,tail,grep和less等命令查看这些日志文件。

查看日志常用命令

tail:  
   -n  是显示行号;相当于nl命令;例子如下:
        tail -100f test.log      实时监控100行日志
        tail  -n  10  test.log   查询日志尾部最后10行的日志;
        tail -n +10 test.log    查询10行之后的所有日志;

head:  
    跟tail是相反的,tail是看后多少行日志;例子如下<a href=http://www.tangkin.com>:</a>
        head -n 10  test.log   查询日志文件中的头10行日志;
        head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

cat: 
    tac是倒序查看(最新在最前),是cat单词反写;例子如下:
        cat -n test.log |grep "debug"   查询关键字的日志

日志查询实际应用场景:

  1. 应用场景一:按行号查看---过滤出关键字附近的日志
    1)cat -n test.log |grep "debug" 得到关键日志的行号
    2)cat -n test.log |tail -n +92|head -n 20 选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志:

    tail -n +92表示查询92行之后的日志
    head -n 20 则表示在前面的查询结果里再查前20条记录

  2. 应用场景二:根据日期查询日志
    sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
    特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效;

    先 grep '2014-12-17 16:17:20' test.log 来确定日志中是否有该 时间点

3.应用场景三:日志内容特别多,打印在屏幕上不方便查看

(1)使用more和less命令,
       如: cat -n test.log |grep "debug" |more     这样就分页打印了,通过点击空格键翻页

(2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析
        如:cat -n test.log |grep "debug"  >debug.txt

清空日志文件

  1. > logname.log 或 echo > logname.log (注:echo形式清空后文件大小不为0)
  2. cat /dev/null >logname.log

一般日志可使用shell进行分片或定期清理。具体内容下次再整理,先定到这里了。

文章目录