日志分析是Linux系统管理和故障排查的核心技能。以下是一些实用的日志分析技巧和技术:
tail -f /var/log/syslog
- 实时查看日志更新grep "error" /var/log/syslog
- 搜索包含"error"的日志行less /var/log/syslog
- 分页查看日志文件journalctl -xe
- 查看systemd日志(带详细错误信息)# 查看最近100行并实时刷新
tail -n 100 -f /var/log/syslog
# 统计错误出现次数
grep -i "error" /var/log/syslog | wc -l
# 查看特定时间段的日志
sed -n '/May 10 10:00:00/,/May 10 11:00:00/p' /var/log/syslog
logrotate
- 自动轮转日志文件zcat
/zless
- 查看压缩的日志文件zcat /var/log/syslog.2.gz | grep "error"
# 统计每个IP的访问次数(适用于web日志)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
# 提取日志中的时间戳和消息
cut -d' ' -f1-3,5- /var/log/syslog
# 提取两个时间点之间的日志
sed -n '/2023-05-01 10:00/,/2023-05-01 11:00/p' /var/log/syslog
/var/log/auth.log
- 认证和安全相关日志/var/log/kern.log
- 内核日志/var/log/dmesg
- 启动时内核消息/var/log/apt/
- APT包管理器日志/var/log/mysql/
- MySQL数据库日志#!/bin/bash
# 分析最近24小时的高频错误
LOG_FILE="/var/log/syslog"
START_TIME=$(date -d "24 hours ago" "+%b %d %H:%M:%S")
END_TIME=$(date "+%b %d %H:%M:%S")
# 提取时间范围内的错误日志
sed -n "/$START_TIME/,/$END_TIME/p" "$LOG_FILE" | \
grep -i "error" | \
awk '{print $5}' | \
sort | \
uniq -c | \
sort -nr | \
head -20
swatch
或logcheck
监控日志变化rsyslog
将关键日志转发到中央服务器fail2ban
分析日志并自动阻止恶意IP掌握这些技巧将大大提高你在Linux环境下的故障排查和系统监控效率。