Appearance
进程、端口与网络排查
第三讲解决“服务器好像卡住了”“端口被占用”“网站访问不了”这三类高频问题。
先记住一句话:排查顺序永远是:先看资源(CPU/内存/磁盘),再看进程,再看端口,最后看网络与 DNS。
一、看进程与资源
bash
ps aux | head -20 # 进程快照
ps aux --sort=-%cpu | head -10 # CPU 占用 Top10
ps aux --sort=-%mem | head -10 # 内存占用 Top10
top # 实时资源面板,q 退出
free -h # 内存概览
df -h # 磁盘占用
du -sh /var/log/* | sort -h # 日志目录谁最大看进程时重点关注:PID、CPU%、MEM%、COMMAND。
二、结束进程
bash
kill -15 <PID> # 友好终止,先试这个
kill -9 <PID> # 强制终止,最后手段
pkill -f "node app.js"⚠️ 永远先确认 PID 对应的是自己的进程;不要对不认识的系统进程执行
kill -9。
三、端口与连接
bash
ss -lntp # 查看监听中的 TCP 端口和进程
ss -lntp | grep 3000 # 查 3000 端口被谁占用
lsof -i :3000 # 另一种查端口占用方式
ss -ant # 查看全部 TCP 连接Windows 侧可用:
powershell
netstat -ano | findstr :3000
taskkill /F /T /PID <PID>四、网络请求排查
bash
curl -v https://web-basics.myxbw.cn/ # 看请求/响应全过程
curl -sI https://web-basics.myxbw.cn/ # 只看响应头
curl -s -o /dev/null -w "%{http_code}\n" URL # 只看状态码
ping -c 3 example.com # 连通性
dig example.com # DNS 解析
dig +short example.com
traceroute example.com # 路由路径(部分系统需安装)curl -v 里重点看:DNS 解析、TCP 连接、TLS 握手、> 请求头、< 响应头。
五、动手实验
💡 动手实验:启动一个本地 Web 服务,查端口、发请求、再优雅关掉。
bash
# 1. 用 Python 起一个临时 HTTP 服务
cd /tmp
python3 -m http.server 18080 > /tmp/http.log 2>&1 &
echo $! > /tmp/http.pid
# 2. 查端口被哪个进程占用
ss -lntp | grep 18080
# 3. 发请求并获取状态码
curl -s -o /dev/null -w "http_code=%{http_code}\n" http://127.0.0.1:18080/
# 4. 优雅结束
kill -15 "$(cat /tmp/http.pid)"
sleep 1
ss -lntp | grep 18080 || echo "port released"小结
- 资源 → 进程 → 端口 → 网络,是排障的固定漏斗顺序
- 查端口:
ss -lntp;查连接:ss -ant;Windows:netstat -ano - 查 HTTP:
curl -v/curl -sI;查 DNS:dig;查连通:ping - 先
kill -15,不行再kill -9,并且永远确认 PID
🧠 记忆锚点:卡了先看资源,连不上先看端口,域名不对先看 DNS,HTTP 不对先看 curl -v。
下一讲:用户、服务与日志——用户、服务与日志。