Linux 基础之 TOP 命令详解

简介: 【2月更文挑战第10天】Linux 基础之 TOP 命令详解

一、前言

TOP 命令是 Linux 常用的性能分析工具,能够实时显示系统中各个进程资源占用状况,类似于 Windows 的任务管理器。

二、Top说明

当使用一个工具时,对此最快的了解方式就是查看说明,那就是"man"。在此也不例外。

man top

通过上面的命令,可以看到下面的输出信息,这里只把最上面的 5 行信息中主要的给出了说明:

2. SUMMARY Display            
Each of the following three areas are individually controlled through one or more interactive commands.  See topic 4b. SUMMARY AREA            
Commands for additional information regarding these provisions.            

2a. UPTIME and LOAD Averages            
This portion consists of a single line containing:            
program or window name, depending on display mode            
current time and length of time since last boot            
total number of users            
system load avg over the last 1, 5 and 15 minutes            

2b. TASK and CPU States            
This portion consists of a minimum of two lines.  In an SMP environment, additional lines can reflect individual CPU state percent?            
ages.            

Line 1 shows total tasks or threads, depending on the state of the Threads-mode toggle.  That total is further classified as:            
running; sleeping; stopped; zombie            

Line 2 shows CPU state percentages based on the interval since the last refresh.            

As  a  default, percentages for these individual categories are displayed.  Where two labels are shown below, those for more recent            
kernel versions are shown first.            
us, user    : time running un-niced user processes            
sy, system  : time running kernel processes            
ni, nice    : time running niced user processes            
id, idle    : time spent in the kernel idle handler            
wa, IO-wait : time waiting for I/O completion            
hi : time spent servicing hardware interrupts            
si : time spent servicing software interrupts            
st : time stolen from this vm by the hypervisor

我们再来看一下具体输出:
在这里插入图片描述

第一行是任务队列信息,同uptime命令的执行结果。

19:15:01 #系统当前时间
up 85 days, 4:45, #系统运行时间,格式为 天,时:分
10 users, #当前登录用户数
load average: 17.94, 31.84, 38.98 #系统负载,即任务队列的平均长度。三个值分别为 1分钟,5分钟,15分钟前到现在的平均值。这里的Load指的出于R(running)和D(Uninterruptible sleep)的两种状态下的进程数,换句话说就是”运行状态或不可中断的状态“

对于这个 “load average” 理解为可以用下面一段图上的解释觉得是非常贴切的。
image.png

即在单核cpu情况下,load average 为1,表示cpu利用率为100,load average 为0.5的表示,其cpu利用率只有50%,load average为1.7说明,cpu已经超负荷 70%.

在多核 cpu 的机器上,需要将以上的1分钟/5分钟/15分钟的负载值除以对应的cpu核数,才好评估对应的 cpu 的负载情况。
在这里插入图片描述

比如,这个 cpu 为8核的机器上,其 cpu 过去一分钟的利用率只有 17.94/8=2.2425,说明 cpu 使用率已经超负荷了约124%

可以使用以下方法查看服务上cpu是几核:

[root@am ~]# cat /proc/cpuinfo |grep processor |wc -l            
8

第二行:进程信息:

Tasks: #进程信息
439 total, #进程总数
1 running, #正在运行的进程数
437 sleeping, #睡眠的进程数
1 stopped, #停止的进程数
0 zombie # 僵尸进程数,一个parent的许多child都已经退出,但Parent还存在,且没有获取到child的状态之前的进程状态。

第三行:CPU信息

%Cpu(s):
84.7 us, #用户空间占用CPU百分比
7.6 sy, #内核空间占用CPU百分比
0.0 ni, #cpu的优先级,数据越高,说明越nice,在CPU调试时,nice越高的优先级越低,nice越低优先级越高。ni表示cpu在手动设置nice值的进程上执行所花的时间。
7.6 id, #空闲CPU百分比
0.0 wa, #等待输入输出的CPU时间百分比
0.0 hi, #硬件CPU中断占用百分比
0.0 si, #软中断占用百分比
0.0 st #虚拟机占用百分比,如果操作系统上部署的有虚拟机,那cpu会被虚拟机占用一定资源。此时,即便有其它进程需要资源,cpu也无法予以分配。相当于cpu资源给偷走了,所以st表示被偷走的时间,steal time.

第四行:内存信息

KiB Mem :
16265968 total, #物理内存总量
2337516 free, #空闲内存总量
12155956 used, #使用的物理内存总量
1772496 buff/cache #用作内核缓存的内存量

第五行:交换内存

KiB Swap:
8257532 total, #交换区总量
3308284 free, #空闲交换区总量
4949248 used. #使用的交换区总量
3446900 avail Mem #是创建新进程时,在不使用swap分区的情况下,能够分配的内存大小。这个大小可能比当前的free还大,这是因为buff/cache中的内存的创建进程时,若需要,也是可以抢占过来的。

任务区:

PID #进程id
USER #用户
PR #优先级
NI #nice值。负值表示高优先级,正值表示低优先级
VIRT #进程使用的虚拟内存总量
RES #进程使用的、未被换出的物理内存大小,单位kb.
SHR #共享内存大小,单位kb
S #进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
%CPU #使用CPU占用百分比
%MEM #进程使用物理内存百分比
TIME+ COMMAND #运行时间+命令名/行

进程排序

按以下大写字母,分别按不同的维度进行排序:

  • M 根据内存使情况排序
  • P 根据CPU使用情况排序
  • N 根据进程ID排序
  • T 根据进程使用CPU的时间排序

在性能排查中常用的命令:

top -H #默认显示进程的运行情况,在top命令执行后,按大写的H,可进入线程执行情况页面,再按一次H则会到进程展示。
top -c #在执行后,按小c,则能够展示进程路径,并且对内核进程的名称(command列),加上方括号。再按c切换回去
top -u root #在执行启动后,按小写u,在输入框中输入对应的用户名来过滤用户。
top 启动后,输入小k ,后面加pid 可以直接杀进程。

如何基于进程id,或程序名来查看资源占用情况:

ps aux |grep processName  #找到对应进程pid            
top -c -p pid  #过滤查看进程的资源占用情况

基于表达式过滤进程:

在top启动后,按大O,进入到过滤表达式的输入框。表达式有以下几种类型:

COMMAND=getty #过滤条件命令行等于getty的显示
!COMMAND=getty #过滤条件命令行不等于getty的显示
%CPU>3.0 #CPU使用率超过3%的显示

其他:

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

参数说明:

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
  • S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
  • s : 安全模式,将交谈式指令取消, 避免潜在的危机
  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
  • n : 更新的次数,完成后将会退出 top
  • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
目录
相关文章
|
2天前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
20 5
Linux 常用文件查看命令
|
4月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
432 8
|
4月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1327 6
|
4月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
295 3
|
1月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
77 24
Linux系统之whereis命令的基本使用
|
8天前
|
Linux
Linux od命令
本文详细介绍了Linux中的 `od`命令,包括其基本语法、常用选项和示例。通过这些内容,你可以灵活地使用 `od`命令查看文件内容,提高分析和调试效率。确保理解每一个选项和示例的实现细节,应用到实际工作中时能有效地处理各种文件查看需求。
43 19
|
19天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
111 25
|
18天前
|
缓存 Linux
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
31 2
|
2月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
61 11
|
4月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
126 56