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/meminfo

free -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.mfbz.cn/a/881305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

en造数据结构与算法C# 群组行为优化 和 头鸟控制

实现: 1.给鸟类随机播放随机动画使得每一只鸟扇翅膀的频率都不尽相同 2.可以自行添加权重,并在最后 sumForce separationForce cohesionForce alignmentForce;分别乘上相应权重,这样鸟就能快速飞行和转向辣 using System.Collections.Ge…

Linux系统编程(基础指令)上

1.Linux常见目录介绍 Linux目录为树形结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录&…

Unity3D入门(二) :Unity3D实现视角的丝滑过渡切换

1. 前言 上篇文章,我们已经初步了解了Unity3D,并新建并运行起来了一个项目,使相机视角自动围绕着立方体旋转。 这篇文章,我们来讲一下Unity3D怎么过渡地切换视角。 我们继续是我上篇文章中的项目,但是需要向把Camera…

​OpenAI最强模型o1系列:开启人工智能推理新时代

前不久OpenAI发布全新模型——o1模型,也就是业界说的“草莓模型”,包含三款型号:OpenAI o1、OpenAI o1-preview和OpenAI o1-mini。 其中,OpenAI o1-mini和 o1-preview已经对用户开放使用: OpenAI o1:高级推…

企业急于采用人工智能,忽视了安全强化

对主要云提供商基础设施上托管的资产的安全分析显示,许多公司为了急于构建和部署 AI 应用程序而打开安全漏洞。常见的发现包括对 AI 相关服务使用默认且可能不安全的设置、部署易受攻击的 AI 软件包以及不遵循安全强化指南。 这项分析由 Orca Security 的研究人员进…

Redis学习以及SpringBoot集成使用Redis

目录 一、Redis概述 二、Linux下使用Docker安装Redis 三、SpringBoot集成使用Redis 3.1 添加redis依赖 3.2 配置连接redis 3.3 实现序列化 3.4 注入RedisTemplate 3.5 测试 四、Redis数据结构 一、Redis概述 什么是redis? redis 是一个高性能的&#xf…

vue项目加载cdn失败解决方法

注释index.html文件中 找到vue.config.js文件注释、

【Python语言初识(二)】

一、分支结构 1.1、if语句 在Python中,要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他…

0基础带你入门Linux之使用

1.Ubuntu软件管理 回顾一下,我们之前使用su root切换到root模式,使用who 发现为什么显示的还是bd用户呢?为什么呢? 这个who是主要来查看的是我们登录的时候是以什么用户登录的 所以即使我们使用who进行查看的时候显示的还是bd用…

【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目

之前写过一篇文章:《【JavaWeb】利用IntelliJ IDEA 2024.1.4 Tomcat10 搭建Java Web项目开发环境(图文超详细)》详细讲解了如何搭建JavaWeb项目的开发环境,里面默认使用的Web版本是4.0版本的。但在某些时候tomcat10可能无法运行we…

提升效率的AI工具集 - 轻松实现自动化

在这个快节奏、高效率的社会中,我们每个人都渴望能够找到提升工作效率的捷径。幸运的是,随着人工智能(AI)技术的迅猛发展,越来越多的AI工具涌现出来,为我们提供了强大的支持。这些工具不仅能够帮助我们提高…

计算机毕业设计 美发管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

尚品汇-秒杀成功下单接口、秒杀结束定时任务-清空缓存数据(五十四)

目录: (1)下单页面 (2)service-activity-client添加接口 (3)web-all 编写去下单控制器 (4)service-order模块提供秒杀下单接口 (5)service-or…

安全基础学习-AES128加密算法

前言 AES(Advanced Encryption Standard)是对称加密算法的一个标准,主要用于保护电子数据的安全。AES 支持128、192、和256位密钥长度,其中AES-128是最常用的一种,它使用128位(16字节)的密钥进…

推荐系统-电商直播 多目标排序算法探秘

前言: 电商直播已经成为电商平台流量的主要入口,今天我们一起探讨推荐算法在直播中所面临的核心问题和解决方案。以下内容参考阿里1688的技术方案整理完成。 一、核心问题介绍 在电商网站中,用户的主要行为是在商品上的行为,直播…

机器学习笔记(一)初识机器学习

1.定义 机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。 机器学习有…

JUC学习笔记(三)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 八、共享模型之工具--JUC8.1 AQS 原理1. 概述2 实现不可重入锁自定义同步器自定义锁 3.心得起源目标设计1) state 设计2)阻塞恢复设计3)队列…

Stable Diffusion不同部件拆分详解

看到很多文章对Stable Diffusion各种原理、详解等,但是么有看到有文章细拆里面各个子模块在做啥,怎么做的,所以就会遇到整体原理理解很透传,问到细节就卡住,这段时间细看了一下文章,对各个部分做一个拆解详…

网络基础,协议,OSI分层,TCP/IP模型

网络的产生是数据交流的必然趋势,计算机之间的独立的个体,想要进行数据交互,一开始是使用磁盘进行数据拷贝,可是这样的数据拷贝效率很低,于是网络交互便出现了; 1.网络是什么 网络,顾名思义是…

【SQL Server】清除日志文件ERRORLOG、tempdb.mdf

数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法: 如果可以停止 SQL Server 服务,那么可以采取更直接的方式来缩减 ERRORLOG 和 tempdb.mdf 文件的大小…