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.rhkb.cn/news/428419.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

提示&#xff1a;C君认为的难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会…

英集芯IP5912:集成开关充电功能的低功耗8位POWER MCU芯片

英集芯IP5912是一款功能丰富的、集成了降压充电管理功能的8位MCU芯片&#xff0c;它内置了一个5V输入的同步降压充电DC-DC&#xff0c;功率管也是内置的&#xff0c;同时提供最大1.5A的充电电流。封装方式采用SOP16&#xff0c;方案应用时只需要很少的外围器件&#xff0c;就可…

【多线程】CAS的原理及应用,看这篇文章就够啦

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;多线程 / javaEE初阶 一、CAS概述 CAS&#xff08;Compare and Swap&#xff09;&#xff0c;中文译为 “比较并交换” &#xff0c;是一种无锁算法中常用的原子操作。CAS通常用于实现线程之间的同…

linux之nacos安装

1:下载nacos安装包 方式一、进入官网下载压缩包 官网地址 找到nacos-server-2.0.1.tar.gz 点击进行下载&#xff0c;下载完成后上传到服务器中。 方式二、使用wget命令下载 也有两种方式&#xff1a;第一种下载速度较慢 wget https://github.com/alibaba/nacos/releases/downl…

Zookeeper学习

文章目录 学习第 1 章 Zookeeper 入门1.1 概述Zookeeper工作机制 1.2 特点1.3 数据结构1.4 应用场景统一命名服务统一配置管理统一集群管理服务器动态上下线软负载均衡 1.5 下载zookeeper 第 2 章 Zookeeper 本地安装2.1 本地模式安装安装前准备配置修改操作 Zookeeper本地安装…

【React】React18.2.0核心源码解读

前言 本文使用 React18.2.0 的源码&#xff0c;如果想回退到某一版本执行git checkout tags/v18.2.0即可。如果打开源码发现js文件报ts类型错误请看本人另一篇文章&#xff1a;VsCode查看React源码全是类型报错如何解决。 阅读源码的过程&#xff1a; 下载源码 观察 package…

uniapp使用uview2上传图片功能

官网地址Upload 上传 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 前提&#xff0c;需要下载vuew2插件 <view class"upload"><view class"u-demo-block__content"><view class"u-page__upload-item"&…

Observability:构建下一代托管接入服务

作者&#xff1a;来自 Elastic Vishal Raj, Marc Lopez Rubio 随着无服务器&#xff08;serverless&#xff09;的引入&#xff0c;向 Elastic Cloud 发送可观察性数据变得越来越容易。你可以在 Elastic Cloud Serverless 中创建一个可观察性无服务器项目&#xff0c;并将可观察…

一文说清楚ETL与Kafka如何实现集成

ETL与Kafka为何需要集成? 随着企业对实时流数据的处理要求越来越高&#xff0c;很多企业都把实时流数(日志、实时CDC采集数据、设备数据…)先推入到kafka中&#xff0c;再通过ETL对kafka中的数据进行消费通过ETL强大的数据的转换、清洗功能来进行数据的集成与分发。 实时数据…

WebMagic:强大的Java网络爬虫框架

上班苦上班累&#xff0c;上班就想打瞌睡。 在当今信息爆炸的时代&#xff0c;数据的获取和处理变得越来越重要。网络爬虫作为获取网络数据的重要工具&#xff0c;已经成为许多开发者和数据科学家的必备技能。今天&#xff0c;我们将介绍一个广受欢迎的Java网络爬虫框架——We…

硬件工程师笔试面试——存储器件

目录 16、存储器件 16.1 基础 存储器件实物图 16.1.1 概念 16.1.2 常见的存储器件及其特点 16.2 相关问题 16.2.1 不同类型的存储器件在成本和性能上有哪些具体的差异 16.2.2 如何根据应用需求选择合适的存储器件? 16.2.3 存储器件的耐用性和可靠性是如何影响其在不同…

数据结构不再难懂:带你轻松搞定图

数据结构入门学习&#xff08;全是干货&#xff09;——图 1 图 1.1 什么是图 图是一种用于表示多对多关系的数学模型。它由一组顶点和一组边构成&#xff0c;用于描述事物之间的复杂关联。 顶点&#xff1a;通常用 V (Vertex) 表示&#xff0c;代表事物或对象。边&#xf…

uniapp+renderJS+google map开发安卓版APP非小程序

背景需求 需要在uniapp中接入google地图,研究了一番,都没有找到合适的,现在说一下教程。 效果图 前期工作 这两点缺一不可,否则你啥也看不到。 1、电脑安装L-O-U梯 用于访问G-OO-G-LE的API或者创建google map key。 2、手机安装L-O-U梯 用于显示google地图。我就是手…

Linux中的进程入门

冯诺依曼体系结构 操作系统(Operator System) 进程控制块&#xff08;PCB&#xff09; struct task_struct{//该进程的所有属性//该进程对应的代码和属性地址struct task_struct* next; }; struct task_struct 内核结构体——>创建内核结构体对象(task_struct&#xff09;…

LinuxC高级作业2

1.整理思维导图 2.做一套笔试题 一&#xff1a; 1.cd .. mkdir dir1 cd dir1 touch file1 2.cp ~/mnt/dir1/ -r * ~/home/dir2/ 3.pwd 4.ls -l 5.ifconfig 6.top 10.find /usr -type f -name "*name*" 11.:wq 13.df -h 14.tar -xzvf tmp.tar.gz 15.sudo c…

登录校验(令牌,过滤器,拦截器使用详解)

文章目录 前言一、会话技术1. Cookie2. Session3. 令牌 二、JWT令牌1. 简介 二、过滤器Filter1. 简介2. 快速入门3. 执行流程4. 使用示例5. 为什么自定义的Filter类不需要使用Component 四、拦截器Interceptor1. 介绍2. 入门程序3. Interceptor详解 前言 该篇详细对SpringBoot…

串口助手的qt实现思路

要求实现如下功能&#xff1a; 获取串口号&#xff1a; foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts()) {qDebug() << "Port: " << serialPortInfo.portName(); // e.g. "COM1"qDebug() <<…

GeoPandas在地理空间数据分析中的应用

GeoPandas是一个开源的Python库&#xff0c;专门用于处理和分析地理空间数据。它建立在Pandas库的基础上&#xff0c;扩展了Pandas的数据类型&#xff0c;使得用户能够在Python中方便地进行GIS操作。GeoPandas的核心数据结构是GeoDataFrame&#xff0c;它是Pandas的DataFrame的…

射击靶标检测系统源码分享

射击靶标检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

VScode开发GD32移植(标准库通用),保姆级!!!!!!!

VScode开发GD32移植(标准库通用)&#xff0c;保姆级&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 文章目录 VScode开发GD32移植(标准库通用)&#xff0c;保姆级&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#…