Ubuntu 运维系列 | 第 9 天:进程管理与性能监控——ps、top、htop 与系统负载分析

在 Ubuntu 服务器的日常运维工作中,有一类问题几乎每天都会遇到:服务器突然变慢、某个进程占满 CPU、内存被耗尽导致 SSH 都连不上。作为运维人员,能否第一时间定位到是哪个进程在”捣乱”,往往决定了故障恢复的速度。今天我们就来系统学习 Ubuntu 下的进程管理与性能监控,掌握 pstophtop 以及系统负载分析这一整套工具链,让你面对性能问题时不再抓瞎。

Ubuntu 运维 第9天

一、核心概念:进程、线程与负载

在动手之前,先厘清几个高频出现却又容易混淆的概念。

进程(Process) 是程序的一次运行实例,它拥有独立的地址空间、PID(进程号)、PPID(父进程号)和用户归属。线程(Thread) 则是进程内部更轻量的执行单元,共享同一进程的内存空间。系统负载(Load Average) 表示处于”可运行状态”和”不可中断睡眠状态”的任务平均数,它反映的是系统整体的繁忙程度,而不是单纯的 CPU 使用率。

一个常见的误区是:看到 load 很高就以为是 CPU 打满。实际上,load 高也可能是因为大量进程在等待 I/O(比如磁盘读写、网络请求),此时 CPU 反而不一定忙。理解这一点,是读懂监控数据的关键。

二、实战步骤

1. 用 ps 查看进程快照

ps 是查看进程瞬间状态的经典命令,常用的组合是 ps aux

ps aux | head -20

输出各列依次是:用户、PID、CPU 占用、内存占用、虚拟内存、物理内存、终端、状态、启动时间、CPU 时间、命令。想按 CPU 或内存排序,可以配合 sort

# 按 CPU 占用降序,取前 10
ps aux --sort=-%cpu | head -11

# 按内存占用降序,取前 10
ps aux --sort=-%mem | head -11

如果只想看某个进程的详细信息,可以用 PID 精确查询:

ps -fp 1234

2. 用 top 实时监控

ps 是静态快照,而 top 提供实时刷新的动态视图,是排查性能问题的第一入口。直接运行:

top

进入交互界面后,有几个常用快捷键:按 1 展开查看每个 CPU 核心;按 P 按 CPU 排序;按 M 按内存排序;按 q 退出。顶部的 load average 三个数值分别代表最近 1 分钟、5 分钟、15 分钟的平均负载。

如果希望以批处理模式输出一次结果(便于脚本采集),可以用:

top -bn1 | head -20

3. 用 htop 提升体验

htoptop 的增强版,界面更直观,支持鼠标点击、颜色标记和树形展示进程父子关系。先安装:

sudo apt update
sudo apt install -y htop

然后运行:

htop

htop 中按 F5 可以切换树形视图,直观看出哪个父进程 fork 出了大量子进程;按 F9 可以直接给选中的进程发送信号(比如 9 强制杀死);按 F4 可按关键字过滤进程。

4. 用 kill 和信号管理进程

定位到问题进程后,需要对其进行管理。优雅终止用 SIGTERM(信号 15),强制终止用 SIGKILL(信号 9):

# 优雅终止(给进程清理的机会)
kill 1234

# 强制终止(进程不响应时使用)
kill -9 1234

# 按名称终止所有匹配进程
pkill -f nginx

三、常见问题

问:load average 多少算高?
一般经验法则是:单核机器 load 长期超过 1,多核机器 load 超过核心数,就值得关注。比如 4 核机器 load 达到 8,说明系统已经明显过载。

问:top 里看到很多进程状态是 D,是怎么回事?
状态 D 表示”不可中断睡眠”,通常是进程卡在等待磁盘 I/O 或网络 I/O,无法被信号打断。如果大量进程长期处于 D 状态,很可能是磁盘故障或存储性能瓶颈。

问:僵尸进程(Zombie)要不要处理?
僵尸进程(状态 Z)本身不占资源,但如果大量累积,说明父进程没有正确回收子进程(缺少 wait() 调用)。排查父进程并修复代码,或重启父进程即可。

四、总结

今天我们从进程、线程、负载这些基础概念出发,系统掌握了 ps 查看快照、top 实时监控、htop 交互分析,以及 kill/pkill 的进程管理方法。核心思路可以概括为三步:先用 top/htop 观察整体负载和 CPU/内存热点,再用 ps 精确定位具体进程,最后用 kill 信号进行干预。记住 load 高不一定是 CPU 满,要先判断是计算型还是 I/O 型瓶颈,再对症下药。下一篇我们将进入日志管理与审计,学会用 journald 和 rsyslog 追踪系统行为,让故障排查有据可查。

下期预告:第 10 天「日志管理与审计——journald、rsyslog 与日志轮转」,敬请期待。

微信二维码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容