跳转到内容

/var/log目录详解

课程介绍

/var/log目录是Linux系统中存储日志文件的主要目录,包含了系统、应用程序和服务的各种日志。本课程将详细讲解/var/log目录的结构、常见日志文件、日志格式以及日志管理方法,帮助你掌握Linux日志系统的使用技巧。

1. /var/log目录概述

1.1 什么是/var/log目录

/var/log目录是Linux系统中存储日志文件的主要目录。

/var/log目录的作用

作用说明
系统日志存储系统运行日志
应用日志存储应用程序日志
服务日志存储服务运行日志
安全日志存储安全相关日志

1.2 /var/log目录结构

/var/log目录包含多个日志文件和子目录。

常见日志文件

文件说明
syslog系统日志
messages系统消息
kern.log内核日志
auth.log认证日志
secure安全日志
boot.log启动日志
dmesg内核消息
cron定时任务日志

2. 常见日志文件

2.1 syslog

syslog是系统的主要日志文件。

syslog内容

bash
# 查看syslog
cat /var/log/syslog

# 查看syslog的最后100行
tail -n 100 /var/log/syslog

# 实时查看syslog
tail -f /var/log/syslog

syslog格式

Jan  1 00:00:00 hostname process[pid]: message

示例

Jan  1 00:00:00 server sshd[1234]: Accepted password for user from 192.168.1.10 port 22 ssh2

2.2 messages

messages是系统消息日志文件。

messages内容

bash
# 查看messages
cat /var/log/messages

# 查看messages的最后100行
tail -n 100 /var/log/messages

# 实时查看messages
tail -f /var/log/messages

messages格式

Jan  1 00:00:00 hostname process[pid]: message

2.3 kern.log

kern.log是内核日志文件。

kern.log内容

bash
# 查看kern.log
cat /var/log/kern.log

# 查看kern.log的最后100行
tail -n 100 /var/log/kern.log

# 实时查看kern.log
tail -f /var/log/kern.log

kern.log格式

Jan  1 00:00:00 hostname kernel: message

2.4 auth.log

auth.log是认证日志文件。

auth.log内容

bash
# 查看auth.log
cat /var/log/auth.log

# 查看auth.log的最后100行
tail -n 100 /var/log/auth.log

# 实时查看auth.log
tail -f /var/log/auth.log

auth.log格式

Jan  1 00:00:00 hostname sshd[pid]: message

示例

Jan  1 00:00:00 server sshd[1234]: Accepted password for user from 192.168.1.10 port 22 ssh2
Jan  1 00:00:00 server sshd[1235]: Failed password for invalid user from 192.168.1.11 port 22 ssh2

2.5 secure

secure是安全日志文件(CentOS系统)。

secure内容

bash
# 查看secure
cat /var/log/secure

# 查看secure的最后100行
tail -n 100 /var/log/secure

# 实时查看secure
tail -f /var/log/secure

secure格式

Jan  1 00:00:00 hostname process[pid]: message

2.6 boot.log

boot.log是启动日志文件。

boot.log内容

bash
# 查看boot.log
cat /var/log/boot.log

# 查看boot.log的最后100行
tail -n 100 /var/log/boot.log

boot.log格式

[    0.000000] message

2.7 dmesg

dmesg是内核消息日志文件。

dmesg内容

bash
# 查看dmesg
dmesg

# 查看dmesg的最后100行
dmesg | tail -n 100

# 实时查看dmesg
dmesg -w

dmesg格式

[    0.000000] message

3. 应用日志

3.1 Apache日志

Apache Web服务器的日志文件。

Apache日志文件

文件说明
access.log访问日志
error.log错误日志

查看Apache日志

bash
# 查看访问日志
cat /var/log/apache2/access.log

# 查看错误日志
cat /var/log/apache2/error.log

# 实时查看访问日志
tail -f /var/log/apache2/access.log

3.2 Nginx日志

Nginx Web服务器的日志文件。

Nginx日志文件

文件说明
access.log访问日志
error.log错误日志

查看Nginx日志

bash
# 查看访问日志
cat /var/log/nginx/access.log

# 查看错误日志
cat /var/log/nginx/error.log

# 实时查看访问日志
tail -f /var/log/nginx/access.log

3.3 MySQL日志

MySQL数据库的日志文件。

MySQL日志文件

文件说明
mysql.logMySQL日志
mysql-slow.logMySQL慢查询日志
mysql-error.logMySQL错误日志

查看MySQL日志

bash
# 查看MySQL日志
cat /var/log/mysql/mysql.log

# 查看MySQL慢查询日志
cat /var/log/mysql/mysql-slow.log

# 查看MySQL错误日志
cat /var/log/mysql/mysql-error.log

4. 日志格式

4.1 标准日志格式

标准日志格式包含时间、主机、进程、消息。

标准日志格式

时间 主机 进程[pid]: 消息

示例

Jan  1 00:00:00 server sshd[1234]: Accepted password for user from 192.168.1.10 port 22 ssh2

4.2 日志级别

日志级别用于标识日志的重要程度。

日志级别

级别说明
EMERG紧急
ALERT警报
CRIT严重
ERR错误
WARNING警告
NOTICE通知
INFO信息
DEBUG调试

5. 日志管理

5.1 查看日志

查看日志的方法。

查看日志

bash
# 查看整个日志文件
cat /var/log/syslog

# 查看日志文件的前100行
head -n 100 /var/log/syslog

# 查看日志文件的后100行
tail -n 100 /var/log/syslog

# 实时查看日志文件
tail -f /var/log/syslog

5.2 搜索日志

搜索日志的方法。

搜索日志

bash
# 搜索包含ERROR的日志
grep "ERROR" /var/log/syslog

# 搜索包含ERROR或WARN的日志
grep -E "ERROR|WARN" /var/log/syslog

# 搜索包含ERROR的日志,并显示行号
grep -n "ERROR" /var/log/syslog

# 搜索包含ERROR的日志,并显示前后3行
grep -C 3 "ERROR" /var/log/syslog

5.3 统计日志

统计日志的方法。

统计日志

bash
# 统计ERROR日志数量
grep -c "ERROR" /var/log/syslog

# 统计WARN日志数量
grep -c "WARN" /var/log/syslog

# 统计INFO日志数量
grep -c "INFO" /var/log/syslog

# 统计日志行数
wc -l /var/log/syslog

5.4 清理日志

清理日志的方法。

清理日志

bash
# 清空日志文件
echo "" > /var/log/syslog

# 删除日志文件
rm /var/log/syslog

# 删除7天前的日志
find /var/log -name "*.log" -mtime +7 -delete

6. 日志轮转

6.1 日志轮转概述

日志轮转是指定期归档和删除旧的日志文件。

日志轮转的目的

目的说明
节省空间删除旧的日志文件,节省磁盘空间
便于管理归档旧的日志文件,便于管理
防止过大防止日志文件过大

6.2 logrotate配置

logrotate是Linux系统的日志轮转工具。

logrotate配置文件

bash
# 编辑logrotate配置文件
vim /etc/logrotate.conf

配置示例

bash
/var/log/syslog {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /usr/bin/systemctl reload rsyslog.service > /dev/null 2>&1 || true
    endscript
}

配置说明

配置项说明
daily每天轮转
rotate 7保留7个日志文件
compress压缩旧的日志文件
delaycompress延迟压缩
missingok日志文件不存在时不报错
notifempty日志文件为空时不轮转
create创建新的日志文件
postrotate轮转后执行的命令

7. 实战案例

案例1:分析登录日志

场景:分析登录日志,找出登录失败的用户。

脚本

bash
#!/bin/bash
# 分析登录日志

# 配置
LOG_FILE="/var/log/auth.log"

# 分析登录日志
echo "===== 分析登录日志 ====="

# 统计登录成功的用户
echo "===== 登录成功的用户 ====="
grep "Accepted" "$LOG_FILE" | awk '{print $9}' | sort | uniq -c | sort -nr

# 统计登录失败的用户
echo "===== 登录失败的用户 ====="
grep "Failed" "$LOG_FILE" | awk '{print $9}' | sort | uniq -c | sort -nr

# 统计登录失败的IP
echo "===== 登录失败的IP ====="
grep "Failed" "$LOG_FILE" | awk '{print $11}' | sort | uniq -c | sort -nr

案例2:分析系统日志

场景:分析系统日志,找出ERROR日志。

脚本

bash
#!/bin/bash
# 分析系统日志

# 配置
LOG_FILE="/var/log/syslog"

# 分析系统日志
echo "===== 分析系统日志 ====="

# 统计ERROR日志
ERROR_COUNT=$(grep -c "ERROR" "$LOG_FILE")
echo "ERROR日志数量:$ERROR_COUNT"

# 统计WARN日志
WARN_COUNT=$(grep -c "WARN" "$LOG_FILE")
echo "WARN日志数量:$WARN_COUNT"

# 统计INFO日志
INFO_COUNT=$(grep -c "INFO" "$LOG_FILE")
echo "INFO日志数量:$INFO_COUNT"

# 查看ERROR日志
echo "===== ERROR日志 ====="
grep "ERROR" "$LOG_FILE" | tail -n 10

课程总结

这节课我们学习了/var/log目录详解。

核心内容:

  • /var/log目录概述
  • 常见日志文件(syslog、messages、kern.log、auth.log、secure、boot.log、dmesg)
  • 应用日志(Apache、Nginx、MySQL)
  • 日志格式(标准日志格式、日志级别)
  • 日志管理(查看日志、搜索日志、统计日志、清理日志)
  • 日志轮转
  • 实战案例

重要命令:

  • cat:查看日志文件
  • tail:查看日志文件末尾
  • head:查看日志文件开头
  • grep:搜索日志
  • wc:统计日志
  • logrotate:日志轮转

/var/log目录是Linux系统日志的核心,掌握这些知识后,我们将在后续课程中学习journalctl命令、日志分析等内容。

课后练习

练习1(基础)

查看/var/log/syslog文件的内容。

练习2(进阶)

搜索/var/log/auth.log文件中的登录失败记录。

练习3(拓展)

分析/var/log/syslog文件,统计ERROR、WARN、INFO日志的数量。

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径