作为IT工程师,分析日志是日常重要工作。以下是我整理的超级实用的Shell日志分析命令,能大幅提升日志处理效率:
# 查看最后100行
tail -n 100 filename.log
# 实时查看新增日志(最常用)
tail -f filename.log
# 查看前100行
head -n 100 filename.log
# 查看文件大小
ls -lh filename.log
# 查找包含"error"的行(不区分大小写)
grep -i "error" filename.log
# 查找多个关键词
grep -E "error|fail|exception" filename.log
# 排除包含"debug"的行
grep -v "debug" filename.log
# 显示匹配行及前后5行
grep -A 5 -B 5 "error" filename.log
# 统计错误出现次数
grep -i "error" filename.log | wc -l
# 按时间范围筛选日志(假设日志格式包含时间戳)
sed -n '/2023-05-01 10:00/,/2023-05-01 11:00/p' filename.log
# 提取特定列数据(以空格分隔的第4列)
awk '{print $4}' filename.log
# 统计不同状态码出现次数
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# 找出访问量最高的10个IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 分析响应时间大于1秒的请求
awk '$NF > 1 {print $0}' access.log
# 合并多个日志文件
cat *.log > combined.log
# 按日期分割日志(每天一个文件)
awk '/2023-05-01/{print > "log.2023-05-01"}' filename.log
# 压缩旧日志(保留最近7天)
find /var/log -name "*.log" -mtime +7 -exec gzip {} \;
# 删除30天前的日志
find /var/log -name "*.log" -mtime +30 -delete
# 实时监控CPU使用率最高的进程
top -b -d 1 -n 1 | grep -A 10 "PID USER"
# 监控内存使用情况
free -m -s 5
# 监控磁盘I/O
iostat -x 5
# 监控网络连接
netstat -ant | awk '{print $6}' | sort | uniq -c
# 统计每分钟的请求量
awk -F: '{print $2":"$3}' access.log | uniq -c
# 找出响应时间最长的10个请求
awk '{print $NF,$0}' access.log | sort -nr | head -10 | cut -f2- -d' '
# 分析每小时错误率
grep "ERROR" app.log | cut -d' ' -f2 | cut -d: -f1 | uniq -c
这些命令组合可以根据实际需求灵活调整,能覆盖90%以上的日志分析场景。建议收藏并根据您的具体日志格式进行适当修改。