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. 自检

  1. 端口排障三步?
  2. 0.0.0.0 与 127.0.0.1 监听的差别?
  3. free 与 available 该看哪个?
  4. kill -15 与 -9 的区别?
  5. 怎样统计连接状态分布?

7. 下一篇

S15-B05 · 磁盘、分区与挂载

进程讲完,下一篇讲"空间去哪了":df/du/inode 三件套。


本篇属于系列《S15 · Linux 与运维》。旧文来源:11 张进程/端口/系统类卡;扩展点 E-S15-011。输出为 Ubuntu 24.04 实测。

S15-B04 · 进程、端口与内存
https://www.clxhxhhr.top/posts/5392/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。