top命令
简介
top
是一个用于实时监视系统运行状态的命令行工具。它可以显示当前运行的进程列表、系统负载情况、内存使用情况以及CPU使用情况等信息,是系统管理员和开发人员常用的性能监控工具之一。
命令输出解析
[root@localhost ~]# top
top - 18:57:17 up 34 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 98 total, 1 running, 96 sleeping, 1 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863224 total, 1612008 free, 93432 used, 157784 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1594328 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7334 root 20 0 161984 2216 1564 R 0.3 0.1 0:00.04 top 1 root 20 0 128004 6528 4136 S 0.0 0.4 0:01.21 systemd
参数 | 值 | 说明 |
---|---|---|
top | -18:57:17 | 系统当前时间 |
up 34 min | 系统到目前为止已运行了多长时间 | |
1 user | 当前系统登录的用户数量 | |
load average: 0.00, 0.01, 0.05 | 系统负载:1分钟, 5分钟, 15分钟;一般负载值<=逻辑cpu+3, 表示正常,过高则高负载。 | |
Tasks: | 98 total | 系统启动的所有进程数 |
1 running | 正在运行的进程数 | |
96 sleeping | 挂起/睡眠的进程数 | |
1 stopped | 停止的进程数 | |
0 zombie | 存在的僵尸进程数 | |
%Cpu(s) | 0.3 us | 用户空间占用cpu百分比 |
0.0 sy | 内核空间占用cpu百分比 | |
0.0 ni | 用户空间内改变过优先级的进程占CPU百分比 | |
99.7 id | 空闲cpu百分比 | |
0.0 wa | 磁盘输入输出等待占用的CPU百分比 | |
0.0 hi | CPU服务于硬件终端所耗费的CPU时间百分比 | |
0.0 si | CPU服务于软件终端所耗费的CPU时间百分比 | |
0.0 st | Steal Time: 这个虚拟机被hypervisor偷去的CPU时间 | |
PID | PID | 进程ID |
USER | 进程所有者 | |
PR | 优先级 | |
NT | nice值,负值表示高优先级,正值表示低优先级 | |
VIRT | 进程使用的虚拟内存总量 | |
RES | 进程使用的未被换出的物理内存大小 | |
SHR | 共享内存大小 | |
S | 进程状态,包括运行(R)、睡眠(S)、停止(T)、僵尸(Z)等。 | |
%CPU | 进程占用的CPU百分比 | |
%MEM | 进程占用的内存百分比 | |
TIME+ | 进程占用CPU总时间 | |
COMMAND | 执行的命令 |
top主要参数
-d N
:设置刷新间隔为N秒。-p PID
:监视指定进程ID的进程。-n N
:设置显示的进程数目。-u USER
:只显示指定用户的进程。-i
:不显示任何闲置或僵死的任务。-s
:安全模式,不显示任何闲置或僵死的任务以及任何符号信息。-b
:以批处理模式运行 top,适合用于脚本中,结果输出到标准输出中。-H
:显示进程的线程信息,例如每个进程的线程数。
.............
top有关按键
- P:按CPU进行排序
- M:按内存进行排序
- T:按进程运行时间进行排序。
- u/U: 显示指定用户的进程信息。
- q:退出
top
命令。 - ?/h:显示帮助信息,列出可用的按键操作。
- k:结束一个进程,输入该命令后,会提示输入一个要结束的进程的 PID,然后按回车确认。
- r:修改进程的优先级,输入该命令后,会提示输入一个要修改优先级的进程的 PID,然后输入新的优先级值。
- n:设置要显示的进程数目,输入该命令后,会提示输入一个要显示的进程数目。
- Space:刷新显示,即更新屏幕上的进程列表和状态信息。
- 1:切换显示模式,可以在单核心和多核心之间切换显示 CPU 使用情况。
- F:切换显示字段,可以选择显示哪些字段,例如 CPU 使用率、内存使用量等。
- o:更改排序方式,可以按照不同的字段对进程进行排序,如 CPU 使用率、内存使用量等。
- s:更改刷新间隔,可以设置刷新间隔时间。
- W:将当前配置写入到
~/.toprc
文件中,以便下次启动top
时使用相同的配置。
%CPU和%MEM观测
%CPU
:表示进程使用 CPU 的百分比。它是指定进程在特定时间段内使用 CPU 的相对时间比例。对于多核系统,这个值可以超过 100%,因为它是相对于单个 CPU 内核而言的。例如,如果一个进程在两个核心上各使用了 50% 的 CPU 时间,那么它的%CPU
值将显示为 100%。%MEM
:表示进程使用物理内存的百分比。它是指定进程当前占用物理内存与系统总物理内存的比例。这个值可能会受到缓存和共享内存的影响,因此有时看起来会超过 100%。例如,如果一个进程占用了系统中的大量缓存内存,那么它的%MEM
值可能会超过 100%。
判断一个进程是否使用了过多的 CPU 资源,可以根据 %CPU
字段进行评估:
通常情况下,一个长期运行的进程,其 %CPU
值持续较高(超过正常运行情况下的数值),可能表示该进程在消耗过多的 CPU 资源。
这可能是由于进程执行了耗时的计算、频繁的 IO 操作或者存在性能问题等原因导致的。在这种情况下,需要进一步调查这个进程的行为,优化代码或者增加硬件资源以减轻 CPU 压力。
判断一个进程是否使用了过多的内存资源,则需要观察 %MEM
字段:
如果一个进程的 %MEM
值持续增长,或者远远超过了其他进程,可能表示该进程存在内存泄漏或者内存使用不当的问题。
这种情况下,你可能需要检查进程的内存使用情况,找出内存泄漏的原因,并进行相应的调整和优化。
结语
top
命令是一个功能强大的实时系统监控工具,可以帮助用户快速了解系统的运行状态,及时发现并解决性能问题。通过查看进程列表、系统负载情况以及资源使用情况,可以有效地进行系统性能优化和故障排除。