Linux 指令篇:top 命令详解
前言
top
命令是 Linux 下用于实时监控系统进程和资源使用情况的重要工具。本文将详细介绍 top
命令的基本用法、高级技巧以及实际应用场景。
一、查看 Java 进程占用的内存
使用 top
命令按内存占用排序,并筛选 Java 进程:
top -o %MEM -b -n 1 | grep java | awk '{print "PID: "$1" 虚拟内存: "$5" 物理内存: "$6" 共享内存: "$7" CPU使用率: "$9"% 内存使用率: "$10"%"}'
二、系统整体统计信息详解
1. 第一行(系统运行状态)
-
top
:当前时间 -
up
:系统已运行时间 -
users
:当前登录用户数 -
load average
:系统负载,三个数值分别为 1 分钟、5 分钟、15 分钟的平均任务队列长度。
Tips:
-
Load Average 代表 CPU 任务负载情况,通常不应超过 CPU 总核数。
2. 第二行(任务状态)
-
Tasks
:总进程数 -
running
:正在运行的进程数 -
sleeping
:休眠中的进程数 -
stopped
:停止的进程数 -
zombie
:僵尸进程数
Tips:
- running越多,服务器压力就越大
3. 第三行(CPU 使用情况)
-
us
:用户态 CPU 占比 -
sy
:内核态 CPU 占比 -
ni
:调整优先级后的 CPU 占比 -
id
:空闲 CPU 占比 -
wa
:等待 I/O 的 CPU 占比 -
hi
:硬件中断占比 -
si
:软件中断占比 -
st
:被虚拟机偷取的 CPU 时间
4. 第四、五行(内存和 Swap 信息)
-
total
:总内存 / 交换分区大小 -
free
:空闲内存 / 交换分区 -
used
:已使用的内存 / 交换分区 -
buff/cache
:内核缓存
Tips:
- 第四、五行分别是内存信息和swap信息
- 所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。
- 当内存的free变少的时候,无需紧张。真正需要看的是Swap中的used信息。
- 关注
Swap used:
Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。当这个数值变高的时候,说明内存是真的不够用了,可能影响性能: used
三、进程信息详解
1. 进程列表关键字段
参数 | 说明 |
---|---|
PID | 进程 ID |
USER | 进程所有者 |
PR | 进程优先级 |
NI | nice 值(优先级调整值) |
VIRT | 进程占用的虚拟内存 |
RES | 进程实际占用的物理内存 |
SHR | 共享内存 |
S | 进程状态(R=运行,S=睡眠,Z=僵尸) |
%CPU | CPU 占用率 |
%MEM | 内存占用率 |
COMMAND | 进程命令 |
四、Top 命令交互操作
默认进入top时,各进程是按照CPU的占用量来排序的
-
按键盘数字 1 可以监控每个逻辑CPU的状况
-
输入 u ,然后输入用户名,则可以查看相应的用户进程
-
top命令默认以K为单位显示内存大小,我们可以通过 大写字母E 切换内存信息区域的显示单位, 按一下E切换到MB, 再按一下E切换到GB
-
输入 h 进入top命令的帮助文档,了解更多关于top的用法
①当前是按照%CPU这一列来排序的
②可以通过上、下键来选择
③按右键可以选择整个列,然后按上、下键来移动整个列的显示位置,前移或后移,按回车确定
④按空格键来显示或隐藏该列,带*的是显示,不带*的是不显示
⑤按s键可以将当前列设置为排序列
⑥按q键退出
1. 编辑显示内容
-
按
f
进入字段编辑模式。 -
选择列后按
s
设置排序列。 -
按
q
退出编辑。
2. 排序调整
-
Shift + P
按 CPU 占用排序。 -
Shift + M
按内存占用排序。 -
Shift + T
按运行时间排序。
3. 其他交互指令
按键 | 说明 |
---|---|
1 | 显示所有 CPU 核心使用情况 |
u | 按用户筛选进程 |
c | 显示完整进程命令行 |
E | 切换内存单位(KB/MB/GB) |
h | 显示帮助信息 |
五、Top 命令常用选项
选项 | 说明 |
---|---|
-d <秒> | 设置刷新间隔 |
-p | 仅显示特定进程 |
-S | 累计模式(显示进程的 CPU 时间累计值) |
-i | 仅显示活动进程 |
-c | 显示完整命令行 |
示例:
top 每隔3秒显式所有进程的资源占用情况
top -d 1 每隔1秒显式所有进程的资源占用情况
top -c 每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 28820 -p 38830 每隔3秒显示pid是28820和pid是38830的两个进程的资源占用情况
top -d 2 -c -p 69358 每隔2秒显示pid是69358的进程的资源使用情况,并显式该进程启动的命令行参数
六、总结
top
命令是 Linux 运维中必备的工具之一,可以实时监测系统负载、进程状态、CPU/内存使用情况等。掌握其基本用法、交互命令和参数选项,可以有效分析和优化系统性能。
如果觉得这篇博客对你有帮助,记得点赞 ⭐、收藏 📌、关注 🚀!