top
top
命令是 Linux 下用于实时查看系统性能和进程状态的工具。它会不断刷新,显示 CPU、内存使用情况,以及系统中正在运行的进程。以下是 top
命令输出的主要部分和它们的通俗解释:
第一部分:系统总体状态
这一部分显示系统的总体运行情况,包括系统运行时间、用户数量、负载等。
top - 15:30:45 up 2 days, 4:12, 2 users, load average: 0.45, 0.30, 0.20
- 15:30:45 → 当前系统时间
- up 2 days, 4:12 → 服务器已运行 2 天 4 小时 12 分钟(没有重启过)
- 2 users → 当前登录的用户数量
- load average: 0.45, 0.30, 0.20 → 系统过去 1 分钟、5 分钟、15 分钟的平均负载。数值代表 CPU 任务的队列长度,通常不超过 CPU 核心数为佳(如 1.00 代表 1 个核心被完全占满)。
第二部分:任务(进程)概览
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
- 183 total → 当前系统共有 183 个进程
- 1 running → 其中 1 个进程正在运行
- 182 sleeping → 182 个进程处于“睡眠”状态(等待资源或输入)
- 0 stopped → 没有被暂停的进程
- 0 zombie → 没有“僵尸进程”(已结束但未完全退出的进程,通常不希望看到这个值大于 0)
第三部分:CPU 使用情况
%Cpu(s): 3.2 us, 1.0 sy, 0.0 ni, 95.5 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
- 3.2 us → 用户进程(us=user space)占 3.2% 的 CPU 时间,通常是应用程序的消耗
- 1.0 sy → 系统进程(sy=system)占 1.0% 的 CPU 时间,代表内核的消耗
- 0.0 ni → 低优先级进程(ni=niced)占 0.0%(如果有值,说明有进程被手动调整过优先级)
- 95.5 id → 空闲(id=idle),95.5% CPU 资源空闲(值越大,表示 CPU 负担越轻)
- 0.2 wa → IO 等待(wa=wait),表示 CPU 在等硬盘等 I/O 设备的响应(过高可能是磁盘瓶颈)
- 0.0 hi → 硬件中断(hi=hardware interrupt),较高时可能有硬件问题
- 0.1 si → 软件中断(si=software interrupt),一般不会太高
- 0.0 st → 被虚拟机“偷走”的 CPU(st=steal time),在云服务器上较高的话可能说明资源紧张
第四部分:内存使用情况
KiB Mem : 16392932 total, 11234832 free, 3124568 used, 2044532 buff/cache
KiB Swap: 4194300 total, 4194296 free, 4 used. 13094876 avail Mem
- 16392932 total → 总物理内存 16GB
- 11234832 free → 空闲 11GB(可直接使用)
- 3124568 used → 已使用 3.1GB
- 2044532 buff/cache → 约 2GB 被缓存(缓存的数据可随时释放给程序使用)
- 4194300 total → 交换分区(swap)大小 4GB
- 4194296 free → 交换分区未被使用(说明物理内存够用)
- 13094876 avail Mem → 还有 13GB 内存可供应用程序使用(包含 free 和部分 buff/cache)
⚠ 注意:
- 如果 Swap used 不是 0,表示物理内存不够,系统开始使用慢速的磁盘交换分区(性能会下降)。
第五部分:进程列表
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 402648 23648 6148 R 25.5 1.2 5:23.44 apache2
5678 user 20 0 203568 13448 3124 S 3.0 0.7 0:45.78 python
主要字段解释:
- PID → 进程 ID,可用
kill PID
终止进程 - USER → 运行该进程的用户
- PR → 进程优先级(数值越小优先级越高)
- NI → 进程的“Nice”值,调整优先级时使用(负值优先级更高,正值更低)
- VIRT → 进程占用的虚拟内存(包括交换空间)
- RES → 进程实际使用的物理内存
- SHR → 共享内存(进程共享的库、文件等)
- S → 进程状态:
R
(Running) 运行中S
(Sleeping) 休眠中D
(Disk sleep) 等待磁盘 I/O(过多说明磁盘繁忙)Z
(Zombie) 僵尸进程(需要清理)
- %CPU → 进程占用的 CPU 百分比
- %MEM → 进程占用的物理内存百分比
- TIME+ → 进程总共占用的 CPU 时间
- COMMAND → 进程执行的命令
实用快捷键
在 top
运行时,可以使用以下按键调整显示方式:
- q → 退出
top
- h → 显示帮助信息
- M → 按内存占用排序
- P → 按 CPU 占用排序
- k → 终止进程(输入 PID 号后按回车)
- 1 → 显示所有 CPU 详细使用情况(多核服务器)
- f → 选择显示的字段
- r → 修改进程优先级(
renice
)
总结
- 看 CPU 负载:
load average
是否超过 CPU 核心数 - 看 CPU 使用情况:
%Cpu(s)
,us
和sy
过高可能是计算密集任务 - 看内存是否够用:
free
是否过低,swap
是否被占用 - 看哪个进程占资源最多:
%CPU
和%MEM
排序,确定哪个进程消耗最大 - 检查僵尸进程:
Z
状态的进程需要排查
如果发现 CPU 或内存占用过高,可以:
- 用
M
、P
排序,找出占用最高的进程 - 如果进程无用,可用
kill PID
结束(或kill -9 PID
强制结束) - 适当调整
nice
值降低优先级
这样你就能用 top
快速定位问题,保持服务器的健康运行!🚀