🔒
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 聊业务也可以