服务器突然变慢,网页加载卡顿,后台任务迟迟不结束。遇到这些问题,别急着重启,打开终端,几个常用的 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 命令不需要复杂工具,随手就用。平时多敲几遍,真出问题时才能稳住不慌。