linux学习之top命令详解

news2024/11/24 2:03:24

参考文章 https://blog.csdn.net/langzi6/article/details/124805024

top

第一行:运行时长,负载

top - 10:04:54 up 474 days, 22:16,  2 users,  load average: 2.07, 1.60, 0.94

top - 10:04:54:当前时间。
up 474 days, 22:16:系统已经运行的时长。
2 users:当前有2个用户登录到系统上。
load average: 2.07, 1.60, 0.94:系统在过去1分钟、5分钟和15分钟内的平均负载值。

这里具体需要关注的还是load average三个数值。先来说说定义吧:在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟,5分钟,15分钟的统计值,这个数值的确能反应服务器的负载情况。但是,这个数值高了也并不能直接代表这台机器的性能有问题,可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。

我这台机器是16核32线程 

 第二行:任务列表

Tasks: 394 total,   2 running, 392 sleeping,   0 stopped,   0 zombie

Tasks:总共有393个进程。
running:其中有2个进程正在运行。
sleeping:有391个进程睡眠。
stopped:没有任何进程被停止。
zombie:没有任何僵死进程(Zombie Process)。

第三行:CPU使用情况

%Cpu(s):  3.8 us,  0.6 sy,  0.0 ni, 95.5 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st

%Cpu(s):指示各种CPU时间的使用百分比。
us:用户空间占比。(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)
sy:内核空间占比。所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它)
ni:用于调整进程优先级的用户进程空间占用率 (nice value) 。 0%
id:表示CPU空闲的时间占比。95.5%
wa:表示等待IO操作的时间占比。(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的)
hi:表示硬中断请求的时间占比。
si:表示软中断请求的时间占比。 0.1%
st:如果为假,则没有任何虚拟机需要被置换。 如果为真,则某些虚拟机被压缩。

第四五行:内存使用情况

KiB Mem : 12944240+total, 54553152 free, 18052124 used, 56837132 buff/cache

KiB Swap:        0 total,        0 free,        0 used. 10732576+avail Mem 

和free -m对比看下
                    total            used          free      shared  buff/cache   available
Mem:         126408       18266       52625         442       55516      107342
Swap:             0           0           0

MiB Mem:显示物理内存的使用情况。
total:总物理内存。12944240kb  126408MB=129441792kb=123G
free:空闲物理内存。54553152kb  52625MB=53888000kb
used:已使用的物理内存。 反正大差不差。
buff/cache:被高速缓存使用的内存量。
MiB Swap:显示交换分区的使用情况。
total:总交换分区大小。
free:空闲交换分区大小。
used:已使用的交换分区大小。
avail Mem:剩余可用内存。

第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了

这句话尤其注意,刚好今天抖音看了一个生产案例,就是说应用程序每次fullgc需要20s,之前不管他,后来发现越来越频繁一周好几次fullgc,发现每次fullgc的时候swap区的内存会减少,说明之前应用内存不够了,直接把一些数据存放到swap,在fullgc的时候需要清楚swap区的数据会浪费很多时间,后来他禁用了swap区,fullgc直接就降到100ms了。

第六行包括后续 进程列表:

PID:进程ID号。
USER:进程所有者的用户名。 --看是哪个用户启动的,看着有点用
PR:进程优先级。 --没啥用
NI:进程的nice值,用于调整进程的优先级。--没啥用
VIRT:进程占用的虚拟内存大小。 --有用
RES:进程占用的物理内存的大小。-- 有用
SHR:共享内存大小。
S:进程状态 (D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程)。
%CPU:该进程当前占用CPU的时间百分比。
%MEM:该进程占用物理内存的百分比。
TIME+:该进程占用CPU的总时间。
COMMAND:命令名称和参数。

以第一条

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND           
 2695 kudu      20   0 4523184 1.206g  24900 S  40.0  1.0  77725:46 kudu-tserver

pid=2695  用户是kudu  进程优先级是20 NI是0 

虚拟内存VIRT=4523184kb=4.3g

物理内存RES=1.2G

共享内存=24MB

进程当前占用cpu的时间比为40%

进程占用内存的百分比为1.0%

该进程占用cpu的总时间是77725分钟46s

使用命令是kudu-tserver

上面是基础,大致了解了top命令各自代表的是啥,下面稍微深入一下如何使用top命令。

3.1. 更改显示内容

top之后我们按f可以自定义显示内容。比如这两个优先级有啥用啊,一辈子可能都用不到。 

 top后按F 出现以下页面 说明目前是按照cpu排序的,我不想看优先级,还想看下ppid

这里也说了使用方法,按d或空格去选择或取消指定展示列,按s去排序,按q或esc

 最后我们设置好了

3.2、top常用参数

要看使用方法少不了-h

(base) [devuser@cdp-node13 ~]$ top -help
  procps-ng version 3.3.10
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

说实话这个-h也很垃圾,直接看别人博客吧。

-d    指定每两次屏幕信息刷新之间的时间间隔,如希望每秒刷新一次,则使用:top -d 1
-p    通过指定PID来仅仅监控某个进程的状态 top -p pid1 -p pid2
-S    指定累计模式
-s    使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
-i    使top不显示任何闲置或者僵死的进程
-c    显示整个命令行而不只是显示命令名 这个还挺有用的
例如:

top   每隔3秒显式所有进程的资源占用情况
top -d 1  每隔1秒显式所有进程的资源占用情况
top -c    每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 28820 -p 38830   每隔3秒显示pid是28820和pid是38830的两个进程的资源占用情况
top -d 2 -c -p 69358  每隔2秒显示pid是69358的进程的资源使用情况,并显式该进程启动的命令行

3.3、top的交互命令

【1】敲top后,按键盘数字“1”可以监控每个逻辑CPU的状况:

【2】敲top后,输入u,然后输入用户名,则可以查看相应的用户进程;

 

 【3】敲top后,top命令默认以K为单位显示内存大小,我们可以通过大写字母E来切换内存信息区域的显示单位,如下按一下E切换到MB,再按以下切换到GB

默认kb

 按一下E切换的MB

 按两下E切换到GB

【4】敲top后,输入h进入top命令的帮助文档,了解更多关于top的用法。

好吧 我还以为top -h就可以了。原来是我狭隘了。

 

 

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

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

相关文章

redis与分布式锁浅谈

redis与分布式锁浅谈 1.高并发下缓存失效问题 1.1 缓存穿透: 缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的null写入缓存&#xff0…

windows禁用输入法

Rime 呼出菜单的快捷键 ctrl grave 跟 vs code 呼出底部命令行的快捷键冲突了,每次用 vs code 时都会用 ctrl space 将输入法禁用,让它变成一个圈叉: 由 [1],这个快捷键是 windows 系统禁用输入法的快捷键,在 Setti…

实战干货——教你用Fiddler捕获HTTPS请求

目录 安装Fiddler 配置Fiddler 配置手机 iOS机安装证书 安全思考? 总结: 安装Fiddler 这里不特别说明了,网上搜索一大把,根据安装引导一步步安装即可。(这里采用的是fiddler v4.6) fiddler抓包视频教…

深入理解Linux虚拟内存管理(六)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三&#xf…

奇安信应急响应-Windows

处置思路方法和Linux是一致的, 系统命令, 有一些整蛊的就会锁定你,不让你用鼠标点击,就通过命令其打开就好 findstr命令跟linux一样查找关键字,图中就是hello关键字,然后.txt的文件, 我们可以…

(1)HTTP与RPC区别

定义 HTTP接口使用基于HTTP协议的URL传参调用RPC接口则基于远程过程调用 http是一种协议 ,rpc是一种方法 RPC RPC服务基本架构包含了四个核心的组件,分别是Client、Server、Clent Stub以及Server Stub。 Client (客户端)&am…

【数据可视化】2D/3D动画

## 2D动画 - transform ◼ CSS3 transform属性允许你旋转,缩放,倾斜或平移给定元素。 ◼ Transform是形变的意思(通常也叫变换),transformer就是变形金刚 ◼ 常见的函数transform function有: ---- 平移:translate(x, y) ---- 缩放:scale…

600万用户在用,中国版Access上市,Excel和WPS用户直呼:太棒了

中国版的Access到底有没有? 大家都知道微软的Access功能很强大,作为office里的一款数据库软件,不仅能帮助我们进行数据的分析和处理,而且再深入一点,还可以用VBA实现一些高级的用法。不仅国外有很多用户,就…

【C++】deque的用法

目录 一、容器适配器二、deque的介绍三、deque的使用及缺陷1、deque的构造函数2、deque的元素访问接口3、deque的 iterator的使用4、deque的增删查改4、deque的缺陷5、为什么选择deque作为stack和queue的底层默认容器 一、容器适配器 在了解deque前,我们先讲一讲什…

2023年,我被迫裸辞....

作为IT行业的大热岗位——软件测试,只要你付出了,就会有回报。说它作为IT热门岗位之一是完全不虚的。可能很多人回说软件测试是吃青春饭的,但放眼望去,哪个工作不是这样的呢?会有哪家公司愿意养一些闲人呢?…

STM32F4_RS485、RS232

目录 1. 485简介 2. 串口UART存在的问题 3. RS232协议 4. RS485协议 6. 硬件分析 7. 实验程序 7.1 main.c 7.2 RS485.c 7.3 RS485.h RS232的高电平1的逻辑为-5V~-15V,低电平0的逻辑为5V~15V。高电平和TTL的0~5V不兼容,传输的距离也不够长。 1. …

SpringCloud Eureka 的详细讲解及示意图-下

SpringCloud Eureka 服务注册与发现-下 搭建EurekaServer 集群- 实现负载均衡&故障容错 为什么需要集群Eureka Server 示意图 说明 1. 微服务RPC 远程服务调用最核心的是实现高可用 2. 如果注册中心只有1 个,它出故障,会导致整个服务环境不可用…

乘法器介绍

阵列乘法器 实现乘法的比较常用的方法是类似与手工计算乘法的方式: 对应的硬件结构就是阵列乘法器(array multiplier)它有三个功能:产生部分积,累加部分积和最终相加。 阵列乘法器的关键路径为(下图标出了两条可能的关…

Clion开发STM32之ESP8266系列(四)

前言 上一篇: Clion开发STM32之ESP8266系列(三) 本篇主要内容 实现esp8266需要实现的函数串口3中断函数的自定义(这里没有使用HAL提供的)封装esp8266服务端的代码和测试 正文 主要修改部分 核心配置头文件(添加一些宏定义) sys_core_conf.h文件中…

【报错】检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败错误

【报错】检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败错误 情况描述解决方法修改目标平台CPU类型下载组件文件复制到指定路径运行指定命令行程序 情况描述 在使用C#进行工控软件开发,需要连接通过OPC连接DCS系统时,需…

STM32--ESP8266物联网WIFI模块(贝壳物联)--温湿度数据上传服务器显示

本文适用于STM32F103C8T6等MCU,其他MCU可以移植,完整资源见文末链接 一、简介 随着移动物联网的发展,各场景下对于物联控制、数据上传、远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块——ESP…

PowerShell系列(五):PowerShell通过脚本方式运行笔记

目录 一、四种执行方式介绍 1、当前文件夹运行命令 2、直接指定完整文件路径执行 3、通过cmd命令直接执行 4、通过Windows计划任务执行PowerShell脚本 二、通过脚本方式执行命令的优势 往期回顾 PowerShell系列(一):PowerShell介绍和cm…

Java 异常处理和最佳实践(含案例分析)

概述 最近在代码 CR 的时候发现一些值得注意的问题,特别是在对 Java 异常处理的时候,比如有的同学对每个方法都进行 try-catch,在进行 IO 操作时忘记在 finally 块中关闭连接资源等等问题。回想自己对 java 的异常处理也不是特别清楚&#x…

第一章 软件工程概论

文章目录 第一章 软件工程概论1. 软件危机1.1.1 软件危机的介绍1.1.2 产生软件危机的原因与软件本身特点有关软件开发与维护的方法不正确有关 1.1.3 消除软件危机的途径例题 软件工程1.2.1 软件工程的介绍1.2.2 软件工程的基本原理1.2.3 软件工程方法学1. 传统方法学2. 面向对象…

集群间 ssh 互信免密码登录失败处理

一、问题描述 某次GreePlum集群免密配置过程中,需要使用普通用户实现ssh免密登录,前方反馈root用户已可完成免密登录,但普通用户同样配置,未生效,提示需输入密码才可以。 现场环境: 二、问题分析处理 …