主题
05 · 进程、端口与资源查看
目标:会查进程与端口占用,会看 CPU / 内存 / 磁盘,形成排查顺序。
1. 环境前提
- 已装
htop、curl(见 04) - Nginx 若在跑,正好当「有监听端口」的样本
2. 进程:谁在跑
bash
ps aux | head
ps aux | grep nginx1
2
2
列(ps aux) | 含义 |
|---|---|
| USER | 以谁身份跑 |
| PID | 进程号 |
| %CPU / %MEM | 占用 |
| COMMAND | 命令行 |
交互更好用:
bash
htop
# F10 或 q 退出;可按 CPU/MEM 排序1
2
2
结束进程(先沟通再杀生产):
bash
kill PID # 温和
kill -9 PID # 强制;最后手段1
2
2
3. 端口:谁在听
现代首选 ss:
bash
sudo ss -tulpn1
| 参数 | 含义 |
|---|---|
-t | TCP |
-u | UDP |
-l | 监听中 |
-p | 显示进程(常需 sudo) |
-n | 数字端口,不反查域名 |
找具体端口:
bash
sudo ss -tulpn | grep ':80'
sudo ss -tulpn | grep ':3000'1
2
2
lsof(需安装时:sudo apt install -y lsof):
bash
sudo lsof -i :801
场景:本地开发常占 3000/5173;云上部署后应用听 127.0.0.1:8080,由 Nginx 反代(09、10)。
4. 资源:CPU / 内存 / 磁盘
bash
free -h # 内存
df -h # 磁盘挂载用量
du -sh ~/lab/* # 某目录各子项多大
uptime # 负载与运行时长1
2
3
4
2
3
4
磁盘满的典型症状:apt 失败、日志写不进、服务起不来。先 df -h,再对可疑目录 du -sh。
5. 一条排查顺序(背下来)
服务「访问不了」时:
text
1. 进程还在吗? ps / systemctl status / htop
2. 端口在听吗? ss -tulpn | grep 端口
3. 本机 curl 通吗? curl -v http://127.0.0.1:端口/
4. 磁盘/内存炸了吗? df -h ; free -h
5. 再查防火墙/安全组(07)与 Nginx(09)1
2
3
4
5
2
3
4
5
当场练:
bash
sudo systemctl status nginx
sudo ss -tulpn | grep ':80'
curl -I http://127.0.0.1/1
2
3
2
3
6. 云机 vs WSL
| 云 Ubuntu | WSL2 | |
|---|---|---|
ss / ps | 相同 | 相同 |
| 端口转发 | 公网还需安全组 | 多为 localhost;Windows 防火墙偶发挡端口 |
| 负载 | 真实共享 CPU | 受 Windows 主机影响大 |
7. 动手清单
- [ ]
htop打开并退出一次 - [ ]
sudo ss -tulpn找到 nginx 的 80(或你的 SSH 端口) - [ ]
df -h与free -h各看一眼,记下磁盘是否紧张 - [ ] 故意问自己:若 3000 被占,用哪条命令定位 PID?
8. 常见翻车
| 翻车 | 处理 |
|---|---|
ss 无 -p 进程名 | 加 sudo |
grep 把自己也搜出来 | grep '[n]ginx' 或 pgrep -a nginx |
| 杀错 PID | 先看 COMMAND 整行;不确定就别 -9 |
| 只查了进程、没查端口 | 进程在但没 listen,仍是挂的 |
9. 官方入口
man ps、man ss、man free、man df- iproute2 / ss(版本随发行版变)
下一篇:管道、文本检索与日志 —— 从「端口在听」进到「日志里写了什么错」。
OS 深读:17 · 进程 · 18 · 调度/线程 · 19 · 虚拟内存与 OOM · 22 · 套接字。
