Linux 命令 —— top命令(查看进程资源占用)

文章目录

  • top 命令显示信息介绍
  • top 命令使用

top 命令显示信息介绍

top 命令是 Linux/Unix 系统中常用的进程监控工具,可以实时动态显示系统中各个进程的资源占用情况,包括CPU、内存等。

进入 linux 系统,直接输入 top,回车,就会显示如下所示的信息。下面详细介绍显示内容:
在这里插入图片描述
1、第一行:时间上的统计

top - 15:10:50 up 10 min,1 user,load average: 3.58,3.28,3.01
  1. top - 15:10:50:表示当前系统的时间是15:10:50;

  2. up 10 min:表示系统当前已经运行了10分钟。

  3. user:表示当前登录系统的用户数为1。

  4. load average: 3.58, 3.28, 3.01:系统负载信息,分别表示1分钟、5分钟和15分钟内的平均负载。负载值越高,表示系统资源被占用得越多。

    一般来说,如果1分钟平均负载超过了系统逻辑 CPU 核心数,就说明系统存在性能瓶颈。

什么是平均负载:

  • 平均负载就是单位时间内平均活跃的进程数,包括了正在使用 CPU 的进程、等待 CPU 和 等待 I/O 的进程。和 CPU 使用率并没有直接关系,如 I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定高;CPU 密集型进程,使用大量 CPU 会导致平均负载升高;大量等待 CPU 的进程调度也会导致平均负载升高。

活跃进程:处于可运行状态和不可中断状态的进程:

  • 可运行状态的进程是指正在使用 CPU 资源执行计算任务或者处于就绪队列中等待 CPU 调度器分配 CPU 时间片的进程,也就是 ps 命令看到的处于 R 状态(Running)的进程。
  • 不可中断状态的进程是指正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如正在等待 I/O 操作完成(磁盘读写、网络收发等)。在 ps 命令中看到的D状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。这些进程虽然不会占用 CPU 时间,但也会被算入平均负载计算中。

关注平均负载与 CPU 内核数来分析系统可以存在性能问题,假如平均负载为 2:

  • 在单核 CPU 的系统上,意味着有一半的进程竞争不到 CPU;
  • 在双核 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用;
  • 在多核 CPU(如 4 核)的系统上,意味着 CPU 有 50% 的空闲。

观察 1分钟、5分钟和15分钟内的平均负载。通过分析这三个时间内平均负载,可以得出系统平均负载的趋势信息;

  • 如果 3 个时间段的负载值差异不大,说明系统负载平稳;且负载值都很高,说明系统负载一直很重。
  • 如果 1 分钟负载很高,但 15 分钟负载相对较低,说明系统可能在最近 1 分钟存在短暂的负载高峰,可能负载还会持续增加;如果 1 分钟负载很低,但 15 分钟负载相对较高,说明之前有很大的负载,最近 1 分钟负载在减少。

2、第二行:任务统计

Tasks: 11 total, 1 running,10 sleeping,0 stopped, 0 zombie
  1. 11 total:表示系统中总共有 11 个进程或任务;
  2. 1 running:表示有1个进程正在运行,占用 CPU 资源执行计算任务;(可运行状态)
  3. 10 sleeping:表示有 10 个任务处于"不可中断睡眠"状态。(不可中断状态)
  4. 0 stopped:表示当前系统中有0个进程处于"已停止"状态;
  5. 0 zombie:表示僵尸进程数。僵尸进程是已经终止但父进程未对其进行资源回收的进程,这种进程不会占用系统资源,但会在进程表中保留相关信息。

3、第三行:CPU 统计

%Cpu(s): 3.4 us, 0.0 sy,0.0 ni, 96.6 id, 0.0 wa, 0.0 hi,0.0 si, 0.0 st
  1. 3.4 us:“us” 代表用户模式 (user mode),用户空间占用CPU的百分比。表示有 3.4% 的 CPU 时间被用户进程所占用。
  2. 0.0 sy:“sy” 代表系统模式 (system mode),内核空间占用CPU的百分比。表示没有 CPU 时间被内核进程所占用。
  3. 0.0 ni:“ni” 代表 nice 值被改变的进程占用的 CPU 时间百分比,也就是改变过优先级的进程占用 CPU 的百分比。
  4. 96.6 id:“id” 代表空闲 (idle),空闲 CPU 百分比。表示有 96.6% 的 CPU 时间处于空闲状态。
  5. 0.0 wa:“wa” 代表等待输入/输出的 CPU 时间百分比,IO 等待占用 CPU 的百分比。
  6. 0.0 hi:“hi” 代表硬中断 (hardware interrupt) 占用的 CPU 时间百分比。
  7. 0.0 si:“si” 代表软中断 (software interrupt) 占用的 CPU 时间百分比。
  8. 0.0 st:“st” 代表被虚拟机偷取的 CPU 时间百分比,这个指标主要针对运行在虚拟机上的系统而言。在虚拟化环境中,物理机的 CPU 资源是被分配给多个虚拟机使用的。当一个虚拟机暂时没有使用 CPU 时,可能会将这部分空闲的 CPU 时间分配给其他虚拟机使用,这个时间即为 “st” 部分;对于物理机或者没有运行在虚拟化环境中的系统来说,这个 “st” 指标通常都是 0.0,因为没有发生 CPU 时间被其他虚拟机偷走的情况。

4、第四行:内存统计

KiB Mem : 2097152 total, 757808 free,1191452 used, 147892 buff/cache
  1. 2097152 total:总物理内存。表示系统总共有 2097152 KiB(约2GB)的物理内存。
  2. 757808 free:空闲内存。表示当前系统中还有 757808 KiB 的可用内存,即空闲内存。
  3. 1191452 used:已用内存。表示当前系统中已经有 1191452 KiB 的内存被使用了。
  4. 147892 buff/cache:可用于缓存的内存。表示有 147892 KiB 的内存被用作页缓存和缓冲区。
    页缓存用于缓存文件系统数据,缓冲区用于存储块设备的I/O数据。这部分内存在需要的时候可以很快地被释放回给应用程序使用。

5、第五行:swap交换分区信息统计

交换分区 (Swap) 是操作系统用来扩展内存容量的一种机制。当物理内存不足时,操作系统会将一些不常用的内存页面交换到 Swap 分区,即把一部分硬盘空间虚拟成内存使用。在内存不够的情况下,操作系统先把内存中暂时不用的数据存到硬盘的交换空间,从而解决内存容量不足的情况,为更重要的进程和数据腾出物理内存空间。

KiB Swap: 0 total, 0 free, 0 used, 905700 avail Mem
  1. 0 total:用于交换的总内存。表示系统中没有配置任何交换分区 (Swap) 空间;
  2. 0 free:空闲交换内存;
  3. 0 used:已用交换内存;
  4. 905700 avail Mem:可用物理内存。表示系统中还有 905700 KiB (约885MB) 的可用物理内存。

6、第六行:各进程状态监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+  COMMAND
  1. PID (Process ID):进程的唯一标识符;—— 可用于定位和管理特定的进程。

  2. USER:运行该进程的用户(进程所有者);—— 可用于审查用户行为和进程权限。

  3. PR (Priority):表示进程的调度优先级。数值越小,优先级越高;—— 可用于调整进程的重要性和CPU使用情况。

  4. NI (Nice value):nice 值用于调整进程的调度优先级。一般情况下,nice 值越小,优先级越高;—— 可用于调整进程的优先级和资源共享。

  5. VIRT (Virtual Memory Size):表示进程使用的虚拟内存大小;—— 可用于评估进程的内存需求。

  6. RES (Resident Size):表示进程使用的物理内存大小;—— 可用于识别内存密集型进程。
    (对于 Java 进程,包括 Java 堆、方法区、线程栈等 JVM 各个内存区域的总和。JVM 堆内存参数设置只是定义了 Java 堆的最小和最大值,并不等同于 RES 值。RES 值会随着 Java 应用程序的实际内存使用情况而动态变化。)

  7. SHR (Shared Mem):表示进程使用的共享内存大小;—— 可用于优化内存使用。

  8. S (Status):显示进程的状态,常见的状态有:R (Running) - 正在运行、S (Sleep) - 睡眠状态、D (Uninterruptible Sleep) - 不可中断的睡眠状态、Z (Zombie) - 僵尸进程、T=跟踪/停止;—— 可用于识别异常或未响应的进程。

  9. %CPU:表示上次更新到现在进程使用的 CPU 时间占用百分比;—— 可用于识别CPU密集型进程。

  10. %MEM:表示进程使用物理内存的占用百分比;—— 可用于识别内存密集型进程。

  11. TIME+:表示进程运行使用的 CPU 时间累计,精确到百分之一秒(单位1/100秒);—— 可用于监控进程的执行时间和效率。

  12. COMMAND:进程的命令名称。—— 可用于识别进程的功能和用途。

top 命令使用

1、查看所有进程

top

示例:top。显示了所有进程的情况。
在这里插入图片描述

2、查看指定进程的所有线程

top -H -p <pid>
  • -H 选项可以切换 top 命令进入线程模式,这样它就会显示进程内的所有线程,而不是仅显示进程本身。
  • 通过 -p <pid> 选项,可以指定要监控的进程 ID (PID)。

示例:top -H -p 587。显示进程 587 下的所有的线程情况。
在这里插入图片描述

3、排序显示

  • M: 按内存使用排序
  • P: 按 CPU 使用排序
  • T: 按运行时间排序
  • N: 按 PID 排序

示例:按 M 进行内存使用排序。
在这里插入图片描述

4、显示设置

  • E:切换 KiB Mem、KiB Swap 统计数据的内存单位 (KiB/MiB/GiB 等)
  • e:切换 VIRT、RES、SHR 内存单位 (m/g/t 等)
  • x: 高亮正在排序的列
  • y: 高亮运行中的进程

示例:按 E 和 e 切换内存单位。
在这里插入图片描述

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

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

相关文章

51单片机STC89C52RC——18.1 HC-SR04超声波测距

目的/效果 独立按键K1按下后开始测距&#xff0c;LCD显示距离&#xff08;mm&#xff09; 一&#xff0c;STC单片机模块 二&#xff0c;HC-SR04 超声波测距 2.1 HC-SR04 简介 HC-SR04超声波测距模块提供2cm~400cm的测距功能&#xff0c;精度达3mm。 2.2 时序 以上时序图表明…

HCIA学习笔记(6)-ACL+NAT

ACL&#xff1a;访问控制列表 访问控制-------在路由器的入或者出接口上&#xff0c;匹配流量&#xff0c;之后产生动作-----只有允许或拒绝 定义感兴趣流量------帮助其他策略去抓流量 匹配规则&#xff1a;至上而下&#xff0c;逐一匹配&#xff0c;上条匹配按照上条执行&…

QTableView仿Excel表头排序和筛选

一.效果 Excel的排序和筛选弹窗如下所示 功能非常强大。不仅支持内容排序和筛选,还支持颜色的排序和筛选,而且还支持设置多种过滤条件。本文只仿最常用的内容排序和内容单过滤条件的筛选,效果如下所示。 从效果图中可以看出,表头Section中的按钮有下列六种状态 enum Butt…

算法的时间复杂度和空间复杂度-例题

一、消失的数字 . - 力扣&#xff08;LeetCode&#xff09; 本题要求的时间复杂度是O(n) &#xff0c;所以我们不能用循环嵌套&#xff1b; 解法一&#xff1a; int missingNumber(int* nums, int numsSize){int sum10;for(int i0;i<numsSize;i){sum1i;}int sum20;for(i…

成为CMake砖家(3):Windows安装make.exe

大家好&#xff0c;我是白鱼。相信很多朋友已经在用 CMake 做交叉编译了&#xff0c; 而交叉编译往往少不了 make.exe, 这篇来讲讲 make.exe 在 Windows 上的安装。 1. 交叉编译需要 generator CMake 本身是一个 meta build tool&#xff0c; 或者说它是派发任务到具体的 bui…

云计算练习题

第一题&#xff1a;每周日晚上11点59分需要将/data目录打包压缩到/mnt目录下并以时间命名 #crontab -e 59 23 * * 7 /bin/tar czvf /mnt/date %F-data.tar.gz /data 59 23 * * 7 /bin/tar czvf /mnt/date %T.tar.gz /data 第二题&#xff1a;查找出系统中/application目录下所有…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…

离线语音识别芯片在智能生活中的应用

离线语音识别芯片&#xff0c;这一技术正逐渐渗透到我们日常生活的每一个角落&#xff0c;为众多产品带来前所未有的智能体验。它能够应用到多种产品中&#xff0c;‌包括但不限于&#xff1a;‌ 1、智能音箱&#xff1a;‌语音识别芯片作为智能音箱的核心&#xff0c;‌使用户…

钢铁与不锈钢区别

钢铁与不锈钢是两种比较特殊的金属材料&#xff0c;它们之间的主要区别可以从以下几个方面进行探讨&#xff1a; 钢属碳素钢&#xff1a;钢铁是含碳量介于0.02%至1.7%之间的铁合金&#xff0c;主要成分是铁&#xff08;Fe&#xff09;和碳&#xff0c;其中铁约占80%以上。它们…

Linux开发:Ubuntu22.04安装libcurl4

libcurl是一个跨平台的网络协议库&#xff0c;支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权&#xff0c;HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传&#xff0c;代理&#xff0c;cookies,和用户认证等&#xff0c;使用…

DNS域名解析原理及配置

目录 一、DNS原理 什么是DNS DNS 的作用 DNS 的工作原理 1. 用户输入域名 2. 查询本地 DNS 服务器 3. 递归查询 4. 根域名服务器 5. 顶级域名服务器 6. 权威 DNS 服务器 7. 返回结果 两种查询方式 二、DNS服务器系统类型 主域名服务器 从域名服务器 缓存域名服务…

搭建一个高并发的Web商品推荐系统,如何涉及软件架构?

搭建一个高并发的Web商品推荐系统&#xff0c;如何涉及软件架构 在搭建一个高并发的Web商品推荐系统时&#xff1a; 微服务架构&#xff1a; 为了支持高并发&#xff0c;我们可以采用微服务架构&#xff0c;将系统拆分成小型、独立的服务&#xff0c;每个服务专注于特定的功…

昇思25天学习打卡营第25天|GAN图像生成

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) GAN图像生成 模型简介 生成式对抗网络(Generative Adversarial Networks&#xff0c;GAN)是一种生成式机器学习模型&#xff0c;是近年来复杂分布上无监督学习最具前景的方法之一。 GAN论文逐…

C++ 入门11:虚函数和多态

往期回顾&#xff1a; C 入门08&#xff1a;运算符重载-CSDN博客 C 入门09&#xff1a;友元函数和友元类-CSDN博客 C 入门10&#xff1a;继承和派生类-CSDN博客 C 入门第十一天&#xff1a;虚函数和多态 一、前言 在前面的文章学习中&#xff0c;我们了解了类和对象的基础知识…

1.32、 基于区域卷积神经网络(R-CNN)的停车标志检测(matlab)

1、基于区域卷积神经网络(R-CNN)的停车标志检测原理及流程 基于区域卷积神经网络&#xff08;R-CNN&#xff09;的停车标志检测原理及流程如下&#xff1a; 原理&#xff1a; R-CNN 是一种用于目标检测的深度学习模型&#xff0c;其核心思想是首先在输入图像中提取出候选区域&…

优化调试体验:让PyCharm的调试过程飞起来

优化调试体验&#xff1a;让PyCharm的调试过程飞起来 PyCharm是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多便利的调试工具来帮助开发者快速定位和解决问题。然而&#xff0c;在某些情况下&#xff0c;用户可能会遇到调试过程缓慢的…

请结合一个问题bug,帮忙梳理一下DecorView和Window之间的关系

在Android开发中&#xff0c;DecorView 和 Window 是两个核心概念&#xff0c;它们在用户界面显示和布局管理中扮演着重要角色。为了更好地理解它们之间的关系&#xff0c;并通过一个假设的bug场景来梳理它们&#xff0c;我们可以从以下几个方面进行阐述。 1. Window 的概念 …

Typescript Vue3中的defineProps接收参数,并withDefaults设置默认值

1. defineProps&#xff1a;接收父组件传递的参数 2. withDefaults&#xff1a;接收时设置默认值 这两个api都不需要引入&#xff0c;可直接在setup中使用 1. person.vue接收参数 <script setup lang"ts">import type {Persons} from /types// 接收list 可不…

springboot3 web

springboot web配置 springboot web的配置有&#xff1a; SpringMvc配置的前缀为&#xff1a;spring.mvcweb场景的通用配置为&#xff1a;spring.web文件上传的配置为&#xff1a;spring.servlet.multipart服务器相关配置为&#xff1a;server 接管SpringMVC 的三种方式 方…