804 字
约 2 分钟
10
S15-B04 · 进程、端口与内存
适用读者:服务"明明启动了却连不上"的人。
前置:S15-B01、S02-B03(端口与连接)。
实测环境:Ubuntu 24.04 / kernel 6.8(2026-11-05)。
覆盖旧文:1296(24) 1286(32) 1315(20) 1297(27) 1289(33) 1299(23) 1312(26) 1293(21) + 3 张 = 206 点。
覆盖扩展:E-S15-011(端口排障三步)。
上一篇:S15-B03 · 权限与用户:rwx 到底管什么
下一篇:S15-B05 · 磁盘、分区与挂载。
1. 一句话结论
"连不上"只看两件事:进程在不在、端口开没开。ps 回答前者,ss 回答后者——netstat 已被 ss 取代。
实测(本机):
ss -tan 状态统计 → LISTEN 29 / ESTAB 7 / TIME-WAIT 9
ss -lntp 输出 → users:(("node",pid=734680,fd=21))
free -h → total 7.6Gi used 4.0Gi free 822Mi buff/cache 3.1Gi available 3.6Gi
2. 端口排障三步(E-S15-011)
① 进程在吗? ps aux | grep <name>
② 端口在吗? ss -lntp | grep <port>
③ 连得上吗? curl -v telnet://127.0.0.1:<port>
| 现象 | 结论 |
|---|---|
| 有进程无端口 | 进程没监听(配置错/启动失败) |
| 有端口无进程 | 端口被别的进程占了 |
| 都在但连不上 | 防火墙 / 只监听 127.0.0.1 / 安全组 |
关键区别:监听地址 0.0.0.0 与 127.0.0.1 —— 后者只能本机访问(容器里常见)。
3. 常用命令速查
| 目的 | 命令 |
|---|---|
| 全部进程 | ps aux |
| 按内存排序 | ps aux --sort=-%mem | head |
| 按 CPU 排序 | ps aux --sort=-%cpu | head |
| 进程树 | pstree -p |
| 实时监控 | top / htop |
| 监听端口 | ss -lntp |
| 某端口占用 | ss -lntp | grep :8080 |
| 连接状态统计 | ss -tan | awk 'NR>1{c[$1]++}END{for(k in c)print k,c[k]}' |
| 内存 | free -h |
| CPU 信息 | lscpu / nproc |
| 结束进程 | kill -15 <pid>(先 TERM,再 -9) |
实测(ps aux --sort=-%mem 前 3):
node 2.4% CPU 19.3% MEM
mysqld 1.7% CPU 9.2% MEM
java 0.3% CPU 5.6% MEM
4. free 的 buff/cache 不是"被占用"
| 列 | 含义 |
|---|---|
total |
总内存 |
used |
已用 |
free |
完全空闲 |
buff/cache |
可回收的缓存(不是泄漏) |
available |
实际可用(used + 可回收的估算) |
实测:free 822Mi 看起来很少,但 available 3.6Gi——看 available 才准。
5. 五个误区
| 误区 | 真相 |
|---|---|
"free 很小就是内存不足" |
看 available |
"netstat 是首选" |
ss 更快更全 |
"kill -9 最干脆" |
跳过清理,可能丢数据 |
| "有进程就等于服务可用" | 还要看监听与端口 |
"buff/cache 需要手动清" |
系统会自动回收 |
6. 自检
- 端口排障三步?
0.0.0.0与127.0.0.1监听的差别?free与available该看哪个?kill -15与-9的区别?- 怎样统计连接状态分布?
7. 下一篇
S15-B05 · 磁盘、分区与挂载
进程讲完,下一篇讲"空间去哪了":df/du/inode 三件套。
本篇属于系列《S15 · Linux 与运维》。旧文来源:11 张进程/端口/系统类卡;扩展点 E-S15-011。输出为 Ubuntu 24.04 实测。
S15-B04 · 进程、端口与内存
https://www.clxhxhhr.top/posts/5392/ 评论
0 条
还没有评论,先写一条吧。