⚡ OpsAILab.cc
🔒

OpsAI 隐私承诺

· 本工具所有计算均在您的浏览器本地完成,文件与数据绝不会上传至任何云端服务器,断网亦可使用

Shell 命令速查卡

按"排错场景"组织的速查卡——不是按命令字母序,因为排障时你记得的是"磁盘满了"而不是"du 的 -x 参数"。所有命令都验证过 macOS / Linux 差异。

Docker 日志怎么看

实时跟踪日志(Ctrl+C 退出,容器不停)

docker logs -f --tail 100 <容器名>

只看最近 10 分钟

docker logs --since 10m <容器名>

看某个时间段

docker logs --since '2026-11-03T10:00' --until '2026-11-03T11:00' <容器名>

日志里搜关键字

docker logs <容器名> 2>&1 | grep -i error

限制日志文件膨胀(daemon.json)

{"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"}}

CPU 飙高怎么排查

找到最吃 CPU 的进程

top -o %CPU   # macOS
top -b -n 1 | head -20   # Linux

按线程看(揪出 Java 里的问题线程)

top -H -p <PID>

查看进程的完整命令行

ps -fp <PID>

容器视角

docker stats --no-stream | sort -k3 -hr | head

磁盘满了怎么办

看哪个分区满了

df -h

inode 满(df 看还有空间但写不进去)

df -i

找出最大的 20 个目录

du -xh / 2>/dev/null | sort -rh | head -20

找出最大的 20 个文件

find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr | head -20

清空已被删除但仍占用空间的文件(lsof)

lsof +L1

Docker 清理三件套

docker system df
docker system prune -af
docker volume prune -f

端口被谁占了

查端口被哪个进程占用

lsof -i :8080   # macOS / Linux
ss -tlnp | grep 8080   # Linux

杀掉占用进程

kill -9 $(lsof -t -i :8080)

看所有监听端口

ss -tlnp

文本处理三剑客

grep:上下文 + 排除 + 递归

grep -rn -A5 -B5 '关键字' ./logs
grep -v '健康检查' app.log

awk:按列提取 + 条件过滤

awk '{print $1, $9}' access.log | sort | uniq -c | sort -rn | head
awk '$9 == 500 {print $7}' access.log

sed:批量替换 + 截取时间段

sed -i '' 's/old/new/g' config.yml   # macOS
sed -i 's/old/new/g' config.yml      # Linux
sed -n '/10:00/,/11:00/p' app.log

find 找文件

按名字找

find / -name '*.log' 2>/dev/null

7 天前修改过的大文件

find /data -type f -mtime +7 -size +100M

找到后直接执行(删 30 天前的日志)

find /var/log/app -name '*.log' -mtime +30 -delete

网络连通性排查

三层递进:通不通 → 通到哪 → 服务起了没

ping 8.8.8.8
curl -v http://目标IP:端口
telnet 目标IP 端口   # 或 nc -zv 目标IP 端口

带超时的 HTTP 探测(监控脚本常用)

curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" --max-time 5 https://example.com

查看本机所有连接状态

ss -tan | awk '{print $1}' | sort | uniq -c

什么时候用得上

  • 半夜被告警叫醒,磁盘跑到 100%,手边没笔记,要快速找回 du 和 lsof 的用法
  • 给新同事做培训,想按磁盘满、端口占用、CPU 飙高这些场景讲,不从 ls 讲起
  • 改脚本前要确认 sed -i 在 macOS 和 Linux 的写法差异,免得改坏线上文件

常见问题

这些命令 CentOS 和 Ubuntu 都能用吗?

大部分通用。差异在 lsof 可能没装,Ubuntu 要 apt install lsof;sed -i 在 macOS 必须写成 sed -i 加一对空引号,Linux 直接 sed -i 接替换表达式。改脚本前先在一台测试机上跑。

docker system prune -af 会删掉正在跑的容器吗?

不会删运行中的容器和它挂载的卷,但会清掉所有已停止容器、未使用镜像和网络。生产机执行前先 docker ps -a 看一眼,确认没有停止待查的容器。

df 显示有空间,写文件却提示 No space left on device?

大概率是 inode 用完了,用 df -i 看 IUsed 那一列。日志按条切割、缓存小文件特别多的机器最常见,清掉小文件后空间立刻回来。

觉得好用?请老架构师喝杯咖啡 ☕ 加微信 qcwindwin 聊业务也可以