一、日志排查场景(最常用)
1. 实时看日志,只抓关键字
bash
tail -f /var/log/xxx.log | grep "error\|fail\|timeout"
2. 今天所有日志里搜关键字
bash
grep "2026-02-21" /var/log/*.log | grep -i error
3. 把错误日志单独保存
bash
cat *.log | grep -i error > error_$(date +%F).log
4. 只看报错,不看正常输出
bash
./run.sh 2>&1 >/dev/null | grep -i error
5. 日志太大,只看最近 1000 行并搜
bash
tail -n 1000 app.log | grep "exception"
二、系统巡检 / 查问题场景
1. 查端口占用
bash
netstat -tulpn | grep :80
ss -tulpn | grep :80
2. 查进程,过滤自己
bash
ps aux | grep nginx | grep -v grep
3. 看磁盘满没满,只看挂载点
bash
df -h | grep -E "/$|/data|/home"
4. 看内存 / CPU 高的进程
bash
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10
5. 看谁占文件描述符多(排查泄漏)
bash
ls /proc/*/fd | wc -l | sort -nr | head -10
三、批量文件操作(运维必备)
1. 清空所有 .log 日志(不删文件)
bash
for f in *.log; do > $f; done
2. 批量压缩 7 天前的日志
bash
find . -name "*.log" -mtime +7 | xargs gzip
3. 批量删除旧日志
bash
find /var/log -name "*.log" -mtime +30 -delete
4. 查找大于 100M 的文件
bash
find / -type f -size +100M | xargs ls -lh
四、脚本里安全写法(避免踩坑)
1. 脚本执行日志全部记录
bash
#!/bin/bash
exec &>> /var/log/script_$(date +%F).log
echo "开始执行..."
# 你的命令
2. 只保留错误,不刷屏
bash
command > /dev/null 2>> error.log
3. 输出到屏幕同时写日志(tee)
bash
echo "运行成功" | tee -a run.log
4. 命令执行失败就退出
bash
set -e
command1
command2
五、统计 / 分析场景
1. 统计访问 IP Top10
bash
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
2. 统计 500/404 错误数量
bash
grep -c " 500 " access.log
grep -c " 404 " access.log
3. 统计文件行数
bash
wc -l *.log
六、你可以直接背的万能组合
- 查问题:
tail -f | grep - 查进程:
ps aux | grep | grep -v grep - 查磁盘:
df -h | grep - 批量清理:
find ... | xargs ... - 脚本日志:
exec &>> log