当前位置:首页>Linux>线上凌晨3点告警,我用这6个Linux命令10分钟找到了元凶

线上凌晨3点告警,我用这6个Linux命令10分钟找到了元凶

  • 2026-09-02 16:46:29
线上凌晨3点告警,我用这6个Linux命令10分钟找到了元凶

说真的,做开发的谁没在半夜被运维的电话叫起来过。告警群里一串红色叹号,你睡眼惺忪连上服务器,脑子却一片空白——该敲什么命令?

很多人一上来只会 tail -f 死命刷日志,刷到天亮也找不到问题。这篇不是鸡汤,是一份可以直接抄作业的"线上排查命令清单"。下面这 6 组命令,覆盖了 80% 的线上问题场景,建议收藏,等真出事的时候就不用再临时搜了。

线上出问题,第一反应肯定是看日志。但光会 tail -f 远远不够。

# 实时看日志,只看 ERROR 行
tail
 -f app.log | grep ERROR

# 看最近 500 行里,包含超时并且是支付服务的报错

tail
 -n 500 app.log | grep "timeout" | grep "payment"

# 统计今天每个接口的平均响应时间(第 N 列是耗时,按逗号分隔)

awk -F',' '/2026-07-11/ {sum[$1]+=$3; cnt[$1]++} END {for(k in sum) print k, sum[k]/cnt[k]}' access.log

核心思路就一句:先用 grep 把噪声过滤掉,再用 awk 做统计。别对着满屏日志肉眼找异常,计算机就是干这个的。

二、进程和端口:ps / top + lsof

服务起不来?大概率是端口被占了,或者进程假死。

# 看占用 8080 端口的到底是什么进程
lsof -i :8080

# 等价替代(CentOS 等没装 lsof 的环境)

ss -lntp | grep 8080

# 按 CPU 占用排序,看谁在偷吃资源

ps aux --sort=-%cpu | head -10

# 优雅停掉某个 jar 进程(先 SIGTERM,给个缓冲)

kill
 -15 $(pgrep -f "myapp.jar")

注意 kill -15 是优雅退出,给程序一个收尾的机会;实在杀不掉再用 kill -9。上来就 -9 容易把正在写的数据搞坏。

三、资源水位:free / df / du

接口变慢,不一定是代码的问题,可能是机器扛不住了。

# 内存占用,人类可读
free -h

# 磁盘还够不够,别等写满了才哭

df
 -h

# 找出当前目录下最占空间的 10 个文件夹

du
 -h --max-depth=1 | sort -rh | head -10

这套命令十万火急的场合特别有用:比如磁盘 100% 导致服务写不进日志,用 du 一查,往往是某个历史日志或容器层没清。

四、网络和接口:curl 是你的探针

服务"明明起来了"却访问不了,多半是网络或配置问题。

# 看一次请求到底卡在哪一步(DNS / 连接 / 传输)
curl -o /dev/null -s -w "dns:%{time_namelookup} connect:%{time_connect} total:%{time_total}\n" https://api.example.com/health

# 带超时,避免无限等待

curl --max-time 5 https://api.example.com/health

# 本地端口通不通

curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8080/health

curl -w 看时间分段,是判断"慢在哪个环节"最快的办法。DNS 慢、握手慢还是后端慢,一眼分清。

五、把排查串成一条命令

单个命令会了,下一步是组合。比如"找出最耗 CPU 的 Java 线程,并定位到具体代码":

# 1. 找到 Java 进程 PID
pgrep -f "myapp.jar"

# 2. 看这个进程里最忙的线程(假设 PID 是 1234)

top -Hp 1234

# 3. 把线程 ID 转成 16 进制,去 jstack 快照里 grep

printf
 "%x\n" <线程ID>
jstack 1234 | grep -A 20 <16进制线程ID>

这一套下来,能从"服务器卡"精确到"是哪行代码在空转",比瞎猜高效十倍。

六、给自己攒个救命 alias

最后一条不命令,是习惯。把常用组合塞进 .bashrc 或 .zshrc:

alias plog="tail -f ~/app.log | grep ERROR"
alias
 pport="lsof -i"
alias
 mem="free -h && echo '---' && df -h"

真出事的时候,手不用过脑子就能敲出 plog,这才是半夜不慌的底气。

写在最后

命令行排查没有捷径,但有套路。上面这 6 组覆盖了日志、进程、资源、网络四个维度,平时在测试环境多练几次,等生产环境告警响起时,你就是那个 10 分钟定位问题的人。

工具是死的人是活的,把这些命令变成肌肉记忆,比囤一百篇收藏夹文章都管用。

本文由AI辅助创作,内容仅供参考。

                 

最新文章

随机文章