汇知百科
白蓝主题五 · 清爽阅读
首页  > 故障排查

用Linux Shell命令快速定位系统异常

服务器突然变慢,网页加载卡顿,后台任务迟迟不结束。遇到这些问题,别急着重启,打开终端,几个常用的 Linux shell 命令就能帮你揪出问题源头。

查看系统整体负载

先看看系统是不是已经“超载”了。运行 uptime,能快速看到当前系统的平均负载:

uptime

输出类似:14:22:05 up 12 days, 3:15, 2 users, load average: 2.45, 1.87, 1.32。后面的三个数字是过去1分钟、5分钟、15分钟的平均负载。如果数值接近或超过 CPU 核心数,说明系统压力不小。

找出“吃”资源最多的进程

接着用 top 命令动态查看进程状态:

top

界面里,%CPU%MEM 列会告诉你哪些进程占用了大量资源。按 Shift + P 可按 CPU 使用率排序,按 Shift + M 按内存排序。发现异常进程后,记下它的 PID,可以进一步处理。

检查磁盘空间是否快满了

有时候程序报错,其实是因为磁盘写不进数据了。运行下面命令看看各分区使用情况:

df -h

重点关注 Use% 这一列,如果某个分区显示 90% 甚至 100%,就得动手清理了。比如日志文件常常藏在 /var/log 目录下,可以用 du 找出大文件:

du -sh /var/log/* | sort -hr | head -5

网络连接异常?查它!

如果服务连不上,可能是端口没开,也可能是连接堆积。用 netstat 查看监听端口和连接状态:

netstat -tulnp

你会看到哪些程序在监听哪些端口。比如发现 Nginx 没有监听 80 端口,那网站打不开就不奇怪了。如果想看具体的连接数,比如查看 ESTABLISHED 状态的连接有多少:

netstat -an | grep :80 | grep ESTABLISHED | wc -l

临时阻塞IP?iptables小试一把

发现某个 IP 频繁请求,怀疑是扫描或攻击,可以用 iptables 先封掉试试:

iptables -A INPUT -s 192.168.1.100 -j DROP

之后观察系统负载是否下降。注意,这个规则重启后会消失,适合临时排查。确认无误后再考虑持久化配置。

日志不会看?grep来帮忙

系统日志往往又长又乱,直接翻文件效率低。用 grep 过滤关键信息:

grep "error" /var/log/syslog

还能结合 tail 实时监控新增日志:

tail -f /var/log/nginx/error.log | grep "502"

这样只要出现 502 错误,终端就会立刻显示,方便定位问题触发时机。

这些 shell 命令不需要复杂工具,随手就用。平时多敲几遍,真出问题时才能稳住不慌。