Linux 基础之 TOP 命令详解

news2024/9/23 15:26:20

文章目录

    • 一、前言
    • 二、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” 理解为可以用下面一段图上的解释觉得是非常贴切的。
在这里插入图片描述

即在单核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 的结果输出到档案内

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6.任务调度:保存和还原现场,时间片轮转

实现任务调度,模拟时间片 1.任务调度 在进行上下文切换时,需要保存和切换以下内容: 寄存器:包括通用寄存器(如 EAX、EBX、ECX等)和特殊寄存器(如程序计数器 PC、堆栈指针 SP、基址指针 BP等&a…

LeetCode | C++ 动态规划——完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

目录 完全背包518. 零钱兑换 II377. 组合总和 Ⅳ参考 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包…

【数据挖掘】时间序列教程【九】

第5章 状态空间模型和卡尔曼滤波 状态空间模型通常试图描述具有两个特征的现象 有一个底层系统具有时变的动态关系,因此系统在时间上的“状态”t 与系统在时间的状态t−1有关 .如果我们知道系统在时间上的状态t−1 ,那么我们就有了我们需要知道的一切,以便对当时的状态进行推…

12-ATF架构下的启动流程

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:Secureboot从入门到精通-[目录] 👈👈👈目录 1、Boot模型2、Boot示例3、Runtime模型4、异常跳转模型5、启动跳转模型

四川佳洲智谷:在AI潮水里加速快跑!

2023年6月28日夏季新品发布会上,摩卡掌舵人李国兴发布了国内首个AI原生HRSaaS整体解决方案——摩卡Eva。该产品的发布,标志着Moka正式成为业内第一家真正交付AI原生HRSaaS产品的公司。 随着AIGC浪潮的到来,越来越多的企业开始意识到人工智能的…

对抗性人工智能如何威胁您的机器学习模型

人工智能(AI)的出现给社会的几乎每个领域带来了革命性的变化。然而,人工智能的前景光明的能力也伴随着重大挑战,特别是在网络安全方面。 保护机器学习工作流程对于保护这些组织免受新兴威胁至关重要,而对抗性人工智能…

DeRPnStiNK靶机复盘

DeRPnStiNK靶机复盘 拿到靶机后我们第一步先扫描靶机地址。 nmap -sP 192.168.197.0/24扫描出我们的靶机地址。 扫描出来后我们再单独对这个ip进行扫描,发现开了三个端口 然后扫描一下目录,发现一个wordpress登陆网址和一个phpmyadmin登陆地址。 我们…

SOLARIS系统下ORACLE数据恢复案例

服务器数据恢复环境: 两台SPARC SOLARIS操作系统服务器通过光纤交换机共享一台存储作为集群使用。平时是一台服务器(以下称为主服务器)在运行,如果该服务器发生故障宕机,只需要将这台服务器关机后开启另外一台服务器&a…

Keepalived 安装与配置

安装 Keepalived apt -y install keepalived 里边有一个杠y,就是我安装的时候里面有yes,就直接是yes 添加 Keepalived 配置 安装好之后, 下一步就开始去来写这个配置文件了,就在这里面去建一个 etc 当中,就是在这个 etc 当中建一个…

关于swagger突然跳转登录页面,swagger打开跳转login页面BUG

今天建了一个初始项目,引入swagger之后,启动调用,却总跳转到一个登录页面,手足无措 启动项目后,打开swagger进行测试,但是跳转到下图页面 最后原因是导入了security的包,导致权限安全拦截 注释…

【Spring boot】RedisTemplate中String、Hash、List设置过期时间

Redis中String设置时间的方法 redisTemplate.opsForValue().set("loginCode","254588",2, TimeUnit.SECONDS);//过期时间2秒 redisTemplate.opsForValue().set("loginCode","254588",2, TimeUnit.MINUTES);//过期时间2分钟 redisTemp…

PyQt5及PySide2总结

PyQt5 1. 通过UIC转换成python代码后需在文件中直接添加即可运行。 方便使用代码补全但每次改动ui会生成在原文件中,不小心会发生覆盖,每次都需要将之前的代码重新补充到新生成的文件中。 from PyQt5 import QtCore, QtGui, QtWidgets if __name__ &…

向量相关的计算

点乘 线的表示 向量在某方向的投影 点与平面的关系 (有符号的距离也可以用来做碰撞检测) 粒子碰撞 叉乘 表示三角形法向量和三角形面积大小 注意:法向量和顶点索引的顺序有关(如果符合右手坐标系,且逆时针为正面…

Jvm对象回收算法-JVM(九)

上篇文章介绍了jvm运行时候对象进入老年代的场景,以及如何避免频繁fullGC。 Jvm参数设置-JVM(八) 老年代分配担保机制 这个机制的目的是为了提升效率,在minorGC之前,会有三次判断,之后再次minorGC速度会…

Python开发项目基于改进高斯混合模型的图割算法

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

实体门店数字化转型应该注意什么?数字化门店如何做?

​当今越来越多得商家都在打造自己得数字化门店,线上经营已经成为时代的必选题,那么数字化门店都有什么优势呢? 1、线上门店的展示 使客户可以在数字门店的线上平台上进入商家的线上商城,查看和浏览门店的品牌信息和活动&#x…

jpg文件怎么压缩到最小?如何对图片进行压缩?

在日常社交聊天中,我们经常会遇到图片或表情包太大无法发送的情况,这时候我们可以通过jpg压缩(https://www.yasuotu.com/jpg)缩小图片kb,如果不想下载软件,可以选择使用浏览器在线图片压缩,下面…

iview的表格行内编辑,input和select组件使用方向键切换输入

如果表格中的输入框和下拉框需要实现方向键切换选择,效果如图: 使用的是IView的UI框架和Vue2,核心是在输入框和下拉框上添加按键监听事件,监听按键对应方向应该要完成的操作,比如当前在Name列的第一行,按【…

C++之非const转const类型(一百五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

QT-qcustomplot应用示例

QT-qcustomplot应用示例 前言一、演示效果二、关键程序三、资源链接 前言 提供曲线显示示例过程 一、演示效果 二、关键程序 // 生成曲线图 void QtWidgetsApplication1::setupQuadratic() {if (m_strViewMachineIndexList.size() < 0)return;// 进度条默认0ui.progressB…