文章目录

  • 1. 先睹为快
  • 2. 第一行的含义:
    • load average详解
    • **怎么查看逻辑核心数?**
  • 3. 第二行和第三行的含义
  • 4. 内存信息: 第四行和第五行的详细信息
  • 5. 进程信息(第7行)
    • 1)每列的含义
      • 参数详解
  • top常用的快捷键
  • top常用举例
    • 1) 找出系统中使用cpu最多的进程
      • 2) 查看gaosh用户的进程内存使用情况
      • 3) 修改成5秒刷新一次
      • 4) 监控指定进程,比如监控PID为1225的进程
  • 总结:

大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第45篇文章

今天我们来聊聊在系统管理中的另外一个命令-top命令。

top命令是我们在日常工作中用的比较多的一个,学会使用top,就相当于有了一把趁手的兵器,上可九天揽月,下可五洋捉鳖。

1. 先睹为快

执行完top命令之后,显示结果如下图,参数比较多,我们细细道来

我把开头的五行截图下来:

2. 第一行的含义:

信息 含义
15:29:56 当前时间
up 6days 运行了6Tina
4users 当前登录用户数
load average 系统负载,三个数值分别表示1分钟,5分钟,15分钟前到现在的平均值
load average详解

load average: 指的是平均负载,在Linux当中,就是系统负载的平均值,它主要是将正在运行的线程对系统的需求显示为平均运行数和等待线程数。

如果平均值为0.0 表示系统处于空闲状态。
一般很多工具在使用这个load average的时候都会选择1分钟,5分钟和15分钟的平均值, 这里有个技巧:

-** 如果1min平均值高于5分钟或者15分钟的平均值,表示负载在增加 **

  • 如果1分钟平均值低于5分或者15分钟的平均值,表示负载在减少。

通过上面的技巧我们很容易判断当前负载是在持续增加还是减少,如果持续增加我们只需要判断当前是否达到了最大负载的阈值, 持续减少,我们几乎不用再去介入,当然你想去研究下为什么15分钟之前的负载突然增高了,也是可以的。

有很多论文上说,这里的load averages指的是系统负载,但我们达不到应用层,所以还是认为是cpu的负载吧。

load averages反应的是cpu的负载,其实是不准确的, 准确的说,load averages
反应的是System load averages. 检测的是正在运行和等待运行的线程数,包括cpu,磁盘,不间断锁等等。

我们可以这么理解:

当load averages较高的情况下,说明等待运行的任务比较低多,因此轮到该任务运行的等待时间就会出现较大延迟,然后反应在负载上就成了负载变高

经验值:

单核心,1分钟的系统平均负载不要超过3,就是ok的。

所以:

cpu 核心数 load averages 负载情况
1 大于3 负载过高
4 大于12 负载过高

注: 这里的cpu核心指的是逻辑核心数

怎么查看逻辑核心数?

方法一:
使用top命令,进入后,按1就可以看到cpu核心数。

方法二:
[root@zmgaosh ~]# cat /proc/cpuinfo | grep ‘processor’ | sort | uniq | wc -l
2

3. 第二行和第三行的含义

信息 含义
Tasks:108 total 服务器的进程总数
1 running 正在运行的进程数
106 sleeping 睡眠的进程数
1 stopped 停止的进程数
0 zombie 僵尸进程数
%Cpu(s):1.2us 系统用户进程使用cpu百分比
1.7sy 内核中进程占用cpu百分比
0.0ni 用户进程数空间内,改变过优先级的进程 占用CPU的百分比
97.2 id 空闲cpu百分比
0,0wa cpu等待IO完成的时间总量
0.0 hi 硬中断占cpu的百分比,也就是硬中断造成cpu开销是多少
0.0si 软中断占CPU的百分比,也就是软中断造成cpu开销是多少
0.0st 虚拟机占用物理机的时间

4. 内存信息: 第四行和第五行的详细信息

信息 含义
Mem 物理内存总量
2094204free 空闲内存总量
308472 used 使用的物理内存总量
1477184 buff/cache 内核缓存的内存量
swap: 0 total 交换区总量
0 free 空间交换区总量
0used 使用的交换分区
3273356 avail mem 总的可利用内存量

5. 进程信息(第7行)

1)每列的含义
列名 含义
PID 进程id
USER 进程所有者的用户名
PR 优先级(由内核动态调整),用户不能
NI 进程优先级。 nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整
VIRT (virtual memory usage) 虚拟内存,是进程正在使用的所有内存(ps中标为VSZ)
RES (resident memory usage) 是进程所使用的物理内存。实际实用内存(ps中标为RSS)
SHR 共享内存大小,单位kb
S 进程状态。
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
参数详解

面试题: VIRT ,RES,SHR这三个值分别代表什么?

VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小 3、计算某个进程所占的物理内存大小公式:RES – SHR 4、swap
out后,它将会降下来

其实知道了这三个值代表什么也并没什么用,最重要的是需要知道下面这句话:
VIRT值最高的进程就是内存使用最多的进程

如果服务器特别卡,你用top排查,那个VIRT数值最大的进程就是元凶,抓住它

top常用的快捷键

默认3s刷新一次,按s修改刷新时间

快捷键 作用
q 退出
s 修改刷新时间,默认3秒刷新一次,按空格立即刷新
P 按CPU排序
M 按内存排序
T 按时间排序
p 进程IP,查看某个进程状态
1 显示每个内核的CPU使用率
u/U 指定显示的用户
h 帮助

top常用举例

1) 找出系统中使用cpu最多的进程

运行top , 找出使用CPU最多的进程 ,按大写的P,可以按CPU使用率来排序显示

2) 查看gaosh用户的进程内存使用情况

[root@zmgaosh ~]# top -u gaosh

3) 修改成5秒刷新一次
        top -d 5
4) 监控指定进程,比如监控PID为1225的进程

[root@zmgaosh ~]# top -p 1225

总结:

top 命令是我们日常工作中用的比较多的一个命令, 学会看几个重要的参数即可,比如load averages,比如查看占用内存最多的进程等

我是高胜寒,一个在教培行业不忘初心的人, 关注我,一起学习,欢迎点赞收藏,我们下篇文章再见!

【linux】循序渐进学运维-基础篇-top命令相关推荐

  1. fdisk 分区_【linux】循序渐进学运维-基础篇-分区命令fdisk

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第47篇文章. 本文我们来讨论一下fdisk命令的使用,使用fdisk可以做分区管理. 1. 命令概述: fdisk 作用: 磁盘分区 ...

  2. 【linux】循序渐进学运维-基础篇-netstat命令详解

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第62篇文章 文章目录 前言 一. netstat命令详解 作用 1. 常用参数 2. 命令使用 1) 参数作用详解 2) 网络连接状 ...

  3. 【linux】循序渐进学运维-基础篇-at命令

    文章目录 前言: 计划任务的分类: at命令的使用 1) 语法格式: 2) 查看是否安装 3) 常用参数 1) at实战举例 a) 21:50 创建一个文件 b) 三天后的下午5点执行touch /r ...

  4. 【linux】循序渐进学运维-基础篇-分区命令fdisk

    文章目录 1. 命令概述: 2. 分区实验 1) 在虚拟机新添加一块硬盘 2) 使用fdisk进行分区 a) 使用命令分区 b) 提示输入m查看帮助,我们来看看都有哪些帮助的选项: c) 每行参数的含 ...

  5. 【linux】循序渐进学运维-基础篇-kill命令

    文章目录 1. 命令格式 2. 命令功能 3. 命令参数 4. kill相关的命令 5. 关于kill的信号 6. 使用方法 1) 彻底杀死进程: 2)杀死程序 重要提示: 总结: 大家好,我是高胜寒 ...

  6. 【linux】循序渐进学运维-基础篇-crontab计划任务

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第58篇文章. 文章目录 前言: crontab定时任务的作用 crontab的参数 crontab 使用举例 1. 每天21:30备 ...

  7. 【linux】循序渐进学运维-基础篇-文件的软硬链接

    文章目录 前言 软硬链接的介绍 1. 硬链接 2. 软连接 案例实战 1) 硬链接原文件删除不会影响链接文件的正常使用 2) 硬链接不能跨分区进行创建 3) 创建软连接,测试删除原文件后,软连接是否还 ...

  8. 【linux】循序渐进学运维-基础篇-linux运维级别

    本文是循序渐进学运维-基础篇系列的第43篇文章 文章目录 Linux的运行级别 运行级别的启动原理 1. 在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service) ...

  9. 【linux】循序渐进学运维-基础篇-修复文件系统实战

    文章目录 前言: 实验环境 解决方案 1) 系统出现只读的情况的解决方案 2) 系统文件受损,可以使用fsck命令 a. 创建一个1G的分区 b. 对分区进行格式化 c. 破坏文件系统并重新挂载 d. ...

最新文章

  1. 语言模型如何为大象“称”体重?斯坦福提出“尺度探测”新思路
  2. Linux /etc/profile文件详解
  3. boot spring 接口接收数据_在 Spring Boot 中使用 Dataway 配置数据查询接口
  4. mybatis写当天 当月的数据 时间段数据https://www.cnblogs.com/xzjf/p/7600533.html
  5. python编写函数求斐波那契数列的某一项_求解一道Python编程题
  6. MVC4将Controller与views分开
  7. UI自动化测试 appium简介
  8. 敏捷测试与传统测试的区别
  9. 夜神模拟器127.0.0.1:62001: 由于目标 计算机积极拒绝,无法连接 解决方法
  10. Netty网络编程聊天项目
  11. 华为[ENSP]OSPF的配置实例(单区域+多区域)
  12. 计算机操作系统出现死锁的原因
  13. 如何更改微信标签名字_微信标签怎么设置?有什么用?
  14. 图片轮播插件slideBox
  15. NiosII 学习过程
  16. 彩色图像高频与低频成分的分解
  17. Java岗面试12家大厂成功跳槽,含泪整理面经
  18. 程序员 业余赚钱的六种有效途径
  19. 一个简单的注册页面制作
  20. Three dynamic_sea实例

热门文章

  1. 轨道交通计算机联锁系统应用,城市轨道交通计算机联锁系统的设计及实现
  2. mongodb java 子查询_MongoDB 怎么计算子查询
  3. 勿在浮沙筑高台——转VC学习入门
  4. 基于B/S构架模式的医院门诊系统
  5. cuda10.1的一步步详细安装记录
  6. Linux DNS服务详解——DNS服务搭建细节
  7. go语言基础-函数应用
  8. LoRA: Low-Rank Adaptation of Large Language Models低秩自适应
  9. google bbr
  10. CDR 2017选择适合自己的工作区