重定向、管道、通配符使用技巧

一、日志排查场景(最常用)

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
滚动至顶部