Linux top命令详解与重点内容说明

文章目录

  • 重点说明
  • 基本信息
  • 进程(任务)信息
  • cpu占用信息%Cpu(s)
  • 内存信息
  • 交换内存信息
  • 每列含义说明
  • 交互命令
  • 多窗口模式
  • 颜色配置
  • 命令参数

重点说明

top命令非常强大,也非常复杂,很难面面俱到,也没有必要,这篇文章的目的是介绍重点,授人以渔,希望帮助朋友们以后遇到文中没有介绍的知识点也能举一反三。

本文内容也比较多,重点关注下面的内容即可,其他的需要了再回过头来看也不迟。

  1. 理解系统负载load average
  2. 理解VIRT、RES、%Mem内存
  3. 理解%Cpu参数
  4. 知道怎么添加删除参数(F、f)
  5. 了解几个常用的交互命令(M、P、H、m、u、o、n、d等)
  6. 了解man top,对top有一定了解了,查看对应文档就更轻松了,可以确定不同系统的具体细节

学习是为了应用,先看一个最常用的简单例子,如何找到占用cpu最多的线程?

  1. 执行top
  2. 输入交互命令H,进入线程模式
  3. 输入交互命令P,按CPU使用率排序

找线程
线程模式下,PID就是线程id。通过线程id,在结合线程dump我们就可以定位对应的线程代码了。

基本信息

top命令

含义
13:54:09当前时间
up 110days,34min系统运行时间
1 user当前登录用户数
load average: 0.24, 0.05, 0.02系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值

这里面最重要的信息就是load average,平均负载,大致意思就是逻辑cpu上等待执行的task队列数量。

如何判断负载高呢?

通常模式下,load average统计的是所有task队列的数量,所有,需要除以逻辑CPU的数量,如果这个值大于等于3就说明负载偏高。

例如:load average的值为6,逻辑cpu的核心数为4,6/4=1.5,小于3,说明cpu负载正常,瓶颈不在CPU上。

可以通过下面命令,查看cpu相关信息。

cat /proc/cpuinfo# 查看cpu物理核数
cat /proc/cpuinfo | grep "physical id" | sort | uniq|wc -l# 查看cpu逻辑核心数
cat /proc/cpuinfo | grep "processor" |wc -l
# 查看cpu核心数
cat /proc/cpuinfo | grep "cores"|uniq
# 查看cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

可以通过交互命令l(小写L)来显示隐藏该行信息。

进程(任务)信息

含义
total进程总数
running正在运行的进程数,R
sleeping睡眠的进程数,S
stopped停止的进程数,T
zombie僵尸进程数,Z

cpu占用信息%Cpu(s)

含义
0.5 us用户空间占用CPU百分比
1.4 sy内核空间占用CPU百分比
0.0 ni用户进程空间内改变过优先级的进程占用CPU百分比
98.1 id空闲CPU百分比
0.0 wa等待输入输出的CPU时间百分比
0.0 hi硬件CPU中断占用百分比
0.0 si软中断占用百分比
0.0 st虚拟机占用百分比

在交互模式下,我们可以通过数字1来显示每一个逻辑cpu的信息。

每个cpu信息

内存信息

含义
4002264 total物理内存总量
1213228 free空闲内存总量
1703096 used使用的物理内存总量
1085940 buff/cache用作内核缓存的内存量

buffer缓冲区,通常是文件的meta信息,cache是缓存,通常是内存页page。

可以通过下面命令查看内存具体信息:

# 查看内存信息
cat /proc/meminfofree -h

可以通过交互命令m切换显示内存信息的格式。

切换进度条模式显示

交换内存信息

参数含义
1942896 total交换区总量
1942896 free空闲交换区总量
92.2 used使用的交换区总量
1992616 avail Mem可用交换区总量

每列含义说明

参数含义
PID进程id
USER进程所有者
PR进程优先级,PR = 20 + NI,[-20,19] ,默认20
NInice好人值,值越大,越容易被插队,优先级越低和PR相反,[-20,19],默认0
VIRT进程使用的虚拟内存总量,VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,RES=CODE+DATA,和%MEM对应
SHR共享内存大小
S进程状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 I=空闲进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,精度1/100秒
COMMAND进程名称(命令名/命令行),可以通过交互命令c来切换查看完整命令行

有几个参数重点说一下:

  1. %CPU:普通模式下,可以大于100%,表示有多线程利用了多个cpu,比如4个逻辑cpu最多能跑到400%,表示4个逻辑CPU都跑满了
  2. VIRT:进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间,如申请100M,就算只使用1M,这个值也是100M
  3. RES:进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间(不包括swap out),申请100M,使用1M,这个值就是1M

上面这些参数不是全部的参数,可以通过交互命令F或者f添加删除参数。

设置参数

有4个窗口,默认只有一个Def窗口:

  1. Def:按 %CPU 排序
  2. Job:按PID排序
  3. Mem:按 %MEM 排序
  4. Usr:按用户字段排序

设置命令:

  1. 带星号的表示当前要显示的参数
  2. 可以通过上下箭头(↑↓)控制选中
  3. 可以通过d或者space(空格)设置是否显示
  4. 可以通过s设置排序字段
  5. 可以通过左右箭头(← →)设置选中整行,然后通过上下箭头(↑↓)调整参数显示顺序
  6. 可以通过q或者esc退出设置
  7. 可以通过a(下一个窗口)或w(下一个窗口)设置要设置的窗口

交互命令

top有大量交互命令,前面我们也介绍了一些,我们可以在top命令下通过h或者?来查看这些交互命令:

top交互命令

参数含义
k终止一个进程,默认使用15信号,如果不能正常结束那就使用信号9强制结束该进程,在安全模式中此命令被屏蔽
r设置nice值
i忽略闲置和僵死进程
q退出程序
S切换到累计模式
d或s改变两次刷新之间的延迟时间,单位为秒
f或者F从当前显示中添加或者删除参数
o或者O设置过滤条件,o不区分大小写,O区分大小写
u或者U根据用户过滤,u不区分大小写,U区分大小写
n或#设置显示的进程数量,通常我们只关心占用资源最多的几个,所以可以修改为3或者5
l(小L)切换显示平均负载和启动时间信息
m切换显示内存信息,可以切换为进度条模式,能直观看出内存占比
t切换显示进程和CPU状态信息
c切换显示命令名称和完整命令行
x高亮排序字段
y高亮运行中任务Running任务
M根据驻留内存大小进行排序
P根据CPU使用百分比大小进行排序
T根据时间/累计时间进行排序
W将当前设置写入~/.toprc文件中
A多窗口模式
R反向排序
H线程模式,列表是线程,而不是进程
V显示进程父子关系
Z颜色配置
Ctrl+L擦除并且重写屏幕
Ctrl+o查看当前过滤条件

多窗口模式

前面我们已经介绍了,top有4个窗口

  1. Def:按 %CPU 排序
  2. Job:按PID排序
  3. Mem:按 %MEM 排序
  4. Usr:按用户字段排序

默认使用Def窗口全屏显示模式,我们可以是用命令A切换到多窗口模式。

可以通过:a、w控制窗口,g输入窗口号选择窗口:

多窗口模式

颜色配置

颜色配置

颜色设置也可以根据不同窗口(Def、Job、Mem、Usr)设置。

  1. S = Summary Data:S设置汇总区域颜色
  2. M = Messages/Prompts:M设置交互提示信息区域颜色
  3. H = Column Heads:H设置参数头区域颜色
  4. T = Task Information:T设置信息body区域颜色

可以通过a或者w切换窗口(Def、Job、Mem、Usr),设置完成回车保存退出,q放弃退出。

当然要每次进入生效,还得W就修改保存到配置文件。

命令参数

除了使用交互命令模式,我们可以直接在top执行的时候指定参数:

参数含义
-c显示完整的命令行
-b以批处理模式显示程序信息,结合重定向可以输出到文件
-S以累积模式显示程序信息
-H以线程模式显示
-n 2表示更新两次后终止更新显示
-d 3设置信息更新周期为3秒
-p pid显示进程号为139的进程信息,CPU、内存占用率等
-o %CPU设置排序字段
# 每10秒刷新一次,刷新5次,输出pid为119的top信息
top -d 10 -b -n 5 -p 119 >> top-info.txt

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

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

相关文章

面试题给图例举测试用例或测试点

目录 从功能测试的角度考虑: 从性能角度考虑: 从兼容性的角度考虑: 从自动化角度考虑: 从安全性角度考虑: 用户体验的角度测试: 面试通常会有技术和人事两种,侧重点不一样。 今天聊一下测…

前端univer创建、编辑excel

前端univer创建、编辑excel 源码在线demo:https://codesandbox.io/p/sandbox/univer-q87kqg?file/src/Demo.jsx univer官网地址:https://univer.ai/zh-CN/guides/sheet/introduction 安装univer npm install univerjs/core univerjs/design univerjs…

音频北斗定位系统有什么用?

在当今科技飞速发展的时代,定位技术已经成为我们日常生活和各行各业不可或缺的一部分。其中,音频北斗定位系统作为一种新兴的定位技术,正逐渐展现出其独特的优势和应用价值。那么,到底音频北斗定位系统有什么用呢?我们一起来了解…

计算机网络nat 映射案列

1 拓扑案列 2 配置 pc 访问外网 # interface LoopBack192 ip address 192.168.1.1 255.255.255.0 # interface Vlan-interface1 ip address 10.1.1.1 255.255.255.0 # # ip route-static 0.0.0.0 0 10.1.1.2 # local-user admin class manage password hash $h$6$0XD4lC…

微信小程序. tarojs webView的 onload 事件不触发

功能需求:想再webView加载成功后做一些逻辑操作。使用onLoad事件 现象:在taro里面webView的onload。onError 事件不触发了 版本:taro 3.6版本 分析:刚开始想着可能是版本,然后用另外一个项目(taro 3.4版…

Docker笔记-Docker Dockerfile

Docker笔记-Docker Dockerfile Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 这里讲解如何运行 Dockerfile 文件来定制一个镜像。 DockerFile构建过程解析: 1、每条保留字指令都必须为大写字母且后面要…

元学习的简单示例

代码功能 模型结构:SimpleModel是一个简单的两层全连接神经网络。 元学习过程:在maml_train函数中,每个任务由支持集和查询集组成。模型先在支持集上进行训练,然后在查询集上进行评估,更新元模型参数。 任务生成&…

C#自定义曲线绘图面板

一、实现功能 1、显示面板绘制。 2、拖动面板,X轴、Y轴都可以拖动。 3、显示面板缩放,放大或者缩小。 4、鼠标在面板中对应的XY轴数值。 5、自动生成的数据数组,曲线显示。 6、鼠标是否在曲线上检测。 二、界面 拖动面板 鼠标在曲线上…

Linux —— 多线程

一、本篇重点 1.了解线程概念,理解线程与进程区别与联系 2.理解和学会线程控制相关的接口和操作 3.了解线程分离与线程安全的概念 4.学会线程同步。 5.学会互斥量,条件变量,posix信号量,以及读写锁 6.理解基于读写锁的读者写…

《JKTECH柔性振动盘:原理与多行业应用》东莞市江坤自动化科技有限公司

一、柔性振动盘的原理 柔性振动盘是一种新型的自动化上料设备,它采用先进的音圈电机技术和柔性振动技术,实现了对各种不规则形状、微小尺寸、易损伤零部件的高效上料和分拣。 其工作原理主要包括以下几个方面: 1. 音圈电机驱动 柔性振动盘内部…

分布式系统的概念与设计模式

概念 定义:分布式系统是指将数据和计算任务分散到多个独立的计算机上,这些计算机通过网络进行通信和协作,共同对外提供服务。分布式系统不仅提高了系统的可靠性和可扩展性,还增强了系统的并发处理能力和数据管理能力。 特点&…

运维开发之堡垒机(Fortress Machine for Operation and Development)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

mysql通过binlog做数据恢复

1 介绍 binlog(二进制日志)在 MySQL 中具有非常重要的作用。它记录了数据库的所有更改操作,主要用于数据恢复、复制和审计等方面。以下是 binlog 的主要作用: 1.数据恢复 binlog 可以用于恢复数据库中的数据。当数据库发生故障时…

分布式框架 - ZooKeeper

一、什么是微服务架构 1、单体架构 顾名思义一个软件系统只部署在一台服务器上。 ​ 在高并发场景中,比如电商项目,单台服务器往往难以支撑短时间内的大量请求,聪明的架构师想出了一个办法提高并发量:一台服务器不够就加一台&am…

微信小程序拨打电话点取消报错“errMsg“:“makePhoneCall:fail cancel“

问题:微信小程序中拨打电话点取消,控制台报错"errMsg":"makePhoneCall:fail cancel" 解决方法:在后面加上catch就可以解决这个报错 wx.makePhoneCall({phoneNumber: 181********}).catch((e) > {console.log(e) //用…

数据安全治理

数据安全治理 1.数据安全治理2.终端数据安全加密类权限控制类终端DLP类桌面虚拟化安全桌面 3.网络数据安全4.存储数据安全5.应用数据安全6.其他话题数据脱敏水印与溯源 7.UEBA8.CASB 1.数据安全治理 数据安全治理最为重要的是进行数据安全策略和流程制订。在企业或行业内经常发…

前端实用工具(二):编程规范化解决方案

目录 本地代码规范化工具 代码检测工具ESLint 代码格式化工具Prettier 远程代码规范化工具 远程提交规范化工具commitizen 提交规范检验工具commitlint husky 什么是git hooks commitlint安装 husky安装 检测代码提交规范 ESLint husky 自动修复格式错误lint-staged…

使用 Puppeteer-Cluster 和代理进行高效网络抓取: 完全指南

文章目录 一、介绍?二、什么是 Puppeteer-Cluster?三、为什么代理在网络抓取中很重要?四、 为什么使用带代理的 Puppeteer-Cluster?五、分步指南: 带代理的 Puppeteer 群集5.1. 步骤 1:安装所需程序库5.2. …

基于 ROS 的Terraform托管服务轻松部署ChatGLM2-6B

介绍 ChatGLM2-6B是开源中英双语对话模型ChatGLM-6B的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础上,ChatGLM2-6B具有更强大的性能、更长的上下文、更高效的推理等特性。 资源编排服务(Resource Orchestration…

C++入门 之 类和对象(下)

目录 一、初始化列表 二、隐式类型转换与explict 三、静态成员——static 四、友元 五、内部类 六、匿名对象 七.对象拷贝时的编译器优化 一、初始化列表 之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式&…