Linux_top命令

news/2024/11/23 23:13:59/

        top命令是Linux系统下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。它是一个动态显示过程,执行该命令后,它展示的信息会将独占前台,直到用户终止该程序为止(可以用Ctrl + C终止)。

top命令结果详解

当我们输入top命令后,屏幕就会出现以下数据

 第一行显示的是服务器整体信息


top - 15:47:34 up 64 days,  1:26,  5 users,  load average: 29.83, 28.93, 24.51

含义分别为: 

  • 15:47:34 — 系统当前时间
  • up 64 days,  1:26, — 系统已经运行了64天1小时26分钟
  • 5 users, — 当前有5个用户正在登录
  • load average: 29.83, 28.93, 24.51 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

load average<0.7 * processor(CPU线程数) 表示当前系统运行良好;
1 * processor<load average<3 * processor,需要参考内存、CPU、网络和IO等指标;
load average>5 * processor 表示负载过大;
实时负载通过r+d来计算

第二行显示的是任务进程信息

Tasks: 1287 total,   1 running, 1282 sleeping,   0 stopped,   4 zombie

含义为:系统现在共有1278个进程,其中处于运行中(running)的有1个,1282个在休眠(sleep),停止状态(stope的)的有0个,zombie状态(僵尸)的有4个。

第三行显示的是CPU状态信息

%Cpu(s):  1.7 us,  1.3 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
  • 1.7%us — 用户空间占用CPU的百分比。
  • 1.3% sy — 内核空间占用CPU的百分比。系统进程CPU使用占比,内核态CPU使用率。
  • 0.0% ni — 改变过优先级的进程占用CPU的百分比
  • 96.9% id — 空闲CPU百分比
  • 0.0% wa — IO等待占用CPU的百分比
  • 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
  • 0.1% si — 软中断(Software Interrupts)占用CPU的百分比
  • 0.0%st — 虚拟机占用CPU的百分比

si 是从网卡过来的数据包多(收发包多),如果si高,则看网络收发包高的进程。一般硬件中断可以分析文件/proc/interrupts,/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及CPU的频率设置,通过这些可以帮助系统打散优化系统的硬件中断。

hi 使用率过高时,表示当前硬件中断占用很大的百分比。

wa:使用过高时,要考虑IO的性能是否有瓶颈,可以使用iostat,sar命令进一步分析
可以使用命令查看硬件中断:

cat /proc/interrupts > hil.txt
sleep 2
cat /proc/interrupts > hi2.txt  
vimdiff hil.txt  hi2.txt
或者
/proc/interrupts > hil.txt
sleep 2
cat /proc/interrupts > hi2.txt

默认情况下显示的是所有CPU的平均值,如果想看每个CPU具体值,则按下数字1即可,返回这个界面,再按一次数字1

 第四行显示的是系统的内存信息

KiB Mem : 39406275+total,  3895844 free, 10708065+used, 28308627+buff/cache
  • Mem 39406275+total:物理内存的总量
  • Mem 3895844 free:物理内存的空闲量
  • Mem 10708065+used:物理内存使用量
  • Mem 28308627+buff/cache:物理内存内核缓存使用量

第五行显示的是swap交换分区信息

KiB Swap:   0 total,   0 free,   0 used. 28355382+avail Mem
  • total:交换区总量
  • free:交换区空闲量
  • used:交换区使用量
  • avail Mem:虚拟内存总量

第六行空行

第七行

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
  • PID — 进程ID
  • USER — 进程所有者
  • PR — 进程优先级
  • NI — nice值
  • VIRT — 进程所占虚拟内存大小???
  • RES — 进程所占物理内存大小(kb)
  • SHR — 进程所占共享内存大小(kb)
  • %CPU — CPU占用百分比
  • %MEM — 物理内存占用百分比
  • TIME+ — 上次更新到现在进程使用的CPU时间总计
  • COMMAND— 启动该进程的命令

top命令参数

  • -b 批处理
  • -c 显示完整的治命令
  • -I 忽略失效过程
  • -s 保密模式
  • -S 累积模式
  • -i<时间>设置间隔时间
  • -u<用户名>指定用户名
  • -p<进程号>指定进程
  • -n<次数>循环显示的次数

小技巧

间隔刷新
进入top后按下d,即可设置间隔刷新时间,默认是3秒。

添加进程监控字段
进入top后按下f,即可添加/减少需要监控的进程信息。

* PID     = Process Id             vMn     = Minor Faults delta
* USER    = Effective User Name    USED    = Res+Swap Size (KiB)
* PR      = Priority               nsIPC   = IPC namespace Inode
* NI      = Nice Value             nsMNT   = MNT namespace Inode
* VIRT    = Virtual Image (KiB)    nsNET   = NET namespace Inode
* RES     = Resident Size (KiB)    nsPID   = PID namespace Inode
* SHR     = Shared Memory (KiB)    nsUSER  = USER namespace Inode
* S       = Process Status         nsUTS   = UTS namespace Inode
* %CPU    = CPU Usage
* %MEM    = Memory Usage (RES)
* TIME+   = CPU Time, hundredths
* COMMAND = Command Name/LinePPID    = Parent Process pidUID     = Effective User IdRUID    = Real User IdRUSER   = Real User NameSUID    = Saved User IdSUSER   = Saved User NameGID     = Group IdGROUP   = Group NamePGRP    = Process Group Id


前面有*的说明已经显示了。

保存设置
对top进行设置后,默认是不保存配置的,只有按了大写的W后才会保存。

监控结果输出到文件

top -d 1 -n 3 > top.log

参考文章:服务器中使用Top命令后,参数解释_top命令的cpu占用率怎么算的_敢敢J的憨憨L的博客-CSDN博客

Linux服务器硬件情况的查看_系统运维_内存溢出 


http://www.ppmy.cn/news/59562.html

相关文章

Ubuntu 如何查看 CPU 架构、系统信息、内核版本、版本代号?

Ubuntu 查看 CPU 架构、系统信息、内核版本、版本代号等相关信息有很多方式&#xff0c;本文介绍几种常用的命令。 x86 架构与 ARM 架构的 CPU 架构不同&#xff0c;如果回显为 aarch64 表示为 ARM 架构&#xff0c;如果回显为 x86_64 表示为 x86 架构&#xff0c;参考《CPU 架…

在制造业的工业2.0中应用MOM系统

介绍 什么是制造运营管理 (MOM) 系统和 IT 架构的最佳实践&#xff1f; 行业专家对制造类型和供应网络有何建议&#xff1f; 管理思维和企业文化是否因不断变化的全球市场而过时&#xff1f; MOM 技术是否过于昂贵&#xff0c;IT 架构是否无法快速适应市场变化&#xff1f;…

测试开发备战秋招面试6-牛客刷题二分查找/排序篇

努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺风顺水只是偶尔,挫折、不堪、焦虑和迷茫才是主旋律。我们登上并非我们所选择的舞台,演出并非我们所选择的剧本。继续加油吧&#xff01; 目录 1、二分查找-I 2、二维数组的查找 3、寻找峰值 …

新形势下,如何进行智慧园区移动应用建设?

智能化工园区通过信息化实现工业管理的数字化和网络化&#xff0c;实现对生产过程的全面监控和实时数据采集。这使企业能够更好地管理&#xff0c;及时发现问题并采取相应的措施来降低成本。此外&#xff0c;智慧化管理提高了企业资源的使用效率&#xff0c;避免浪费和重复利用…

JavaScript:数组---双指针法

文章目录 双指针法27.移除元素为什么返回值是整数&#xff0c;但输出的答案是数组&#xff1f;双指针法 977.有序数组的平方暴力法&#xff1a;先平方再排序双指针法 总结双指针 双指针法 27.移除元素 为什么返回值是整数&#xff0c;但输出的答案是数组&#xff1f; 双指针法…

c++ 入门概述

c 入门概述 1. c 关键字2. c 命名空间3. c 输入与输出4. c 缺省参数5. c 函数重载6. c 引用6.1 引用概念6.2 引用特性6.3 常引用6.4 引用与指针区别 7. c 内联函数8. c auto 关键字9. 范围 for 循环 1. c 关键字 c 98中&#xff0c;规定的关键字总共有63个&#xff1a; 2. c…

Java时间类(三) -- Calendar()(日历类)

java.util.Calendar类是一个抽象类,它提供了日期计算的相关功能、获取或设置各种日历字段的方法。 protected Calendar() 构造方法为protected修饰,无法直接创建该对象。1. Calendar()的常用方法: 方法名说明static Calendar getInstance()使用默认时区和区域获取日历vo…

Java 网络编程 —— ServerSocket 详解

构造 ServerSocket ServerSocket 的构造方法有以下几种重载形式 ServerSocket() throws IOException ServerSocket(int port) throws IOException ServerSocket(int port, int backlog) throws IOException ServerSocket(int port, int backlog, InetAddress bindAddr) throw…