跳到主要内容

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 hiCPU服务于硬件终端所耗费的CPU时间百分比
0.0 siCPU服务于软件终端所耗费的CPU时间百分比
0.0 stSteal Time: 这个虚拟机被hypervisor偷去的CPU时间
PIDPID进程ID
USER进程所有者
PR优先级
NTnice值,负值表示高优先级,正值表示低优先级
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有关按键

  1. P:按CPU进行排序
  2. M:按内存进行排序
  3. T:按进程运行时间进行排序。
  4. u/U: 显示指定用户的进程信息。
  5. q:退出 top 命令。
  6. ?/h:显示帮助信息,列出可用的按键操作。
  7. k:结束一个进程,输入该命令后,会提示输入一个要结束的进程的 PID,然后按回车确认。
  8. r:修改进程的优先级,输入该命令后,会提示输入一个要修改优先级的进程的 PID,然后输入新的优先级值。
  9. n:设置要显示的进程数目,输入该命令后,会提示输入一个要显示的进程数目。
  10. Space:刷新显示,即更新屏幕上的进程列表和状态信息。
  11. 1:切换显示模式,可以在单核心和多核心之间切换显示 CPU 使用情况。
  12. F:切换显示字段,可以选择显示哪些字段,例如 CPU 使用率、内存使用量等。
  13. o:更改排序方式,可以按照不同的字段对进程进行排序,如 CPU 使用率、内存使用量等。
  14. s:更改刷新间隔,可以设置刷新间隔时间。
  15. 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 命令是一个功能强大的实时系统监控工具,可以帮助用户快速了解系统的运行状态,及时发现并解决性能问题。通过查看进程列表、系统负载情况以及资源使用情况,可以有效地进行系统性能优化和故障排除。