linux基本功系列之uptime命令实战

news2024/12/26 21:44:04

在这里插入图片描述

文章目录

  • 一. uptime命令介绍
  • 二. 语法格式及常用选项
  • 三. 参考案例
    • 3.1 显示当前系统运行负载情况
    • 3.2 显示机器正常运行的时间
    • 3.3 显示机器启动时间
    • 3.4 关于平均负载的介绍
  • 总结

前言🚀🚀🚀
想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 知识最重要的是记忆
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. uptime命令介绍

Linux系统中的uptime命令主要用于获取主机运行时间和查询Linux系统负载等信息。

uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。 uptime命令用法十分简单,直接输入uptime即可查看系统负载情况。

二. 语法格式及常用选项

使用帮助命令查看具体的参数和语法格式:
uptime --help

[root@mufenggrow ~]# uptime --help

Usage:
 uptime [options]

Options:
 -p, --pretty   show uptime in pretty format
 -h, --help     display this help and exit
 -s, --since    system up since
 -V, --version  output version information and exit

For more details see uptime(1).

可以看到,uptime后面可以直接跟选项。

参数描述
-p采用可读友好的格式输出系统已运行时长
-h–help 显示帮助信息
-s–since 以格式 yyyy-mm-dd HHSS format 输出系统启动时间
-V–version 显示版本信息

三. 参考案例

3.1 显示当前系统运行负载情况

不加任何参数直接执行uptime,如下:

[root@mufenggrow ~]# uptime
 22:53:55 up  3:05,  3 users,  load average: 0.00, 0.02, 0.05

以上列出的参数解释:

参数描述
22:53:55当前系统的时间
up 3:05系统已经运行了3个小时零5分
3users当前登录用户数
load average: 0.00, 0.02, 0.05系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

经验:单核心,1分钟的系统平均负载不要超过3

基于以上经验:

如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。

3.2 显示机器正常运行的时间

此处只显示机器的正常运行时间,所以需要用到-参数

[root@mufenggrow ~]# uptime -p
up 3 hours, 12 minutes

可以看到显示的时间为3小时12分钟,这是系统运行时间,一般等于你开机的时间,比如:

[root@master-21 ~]# uptime -p
up 7 hours, 43 minutes

3.3 显示机器启动时间

我们知道系统运行的时间之后,想知道是从哪个时间点运行的,就可以使用-s参数

[root@mufenggrow ~]# uptime -s
2023-01-31 19:48:26

可以看到-s显示的是具体的系统启动运行时间。

3.4 关于平均负载的介绍

平均负载:

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系。

  • 可运行状态:是指正在使用CPU或者正在等待CPU的进程,也就是ps命令看到的处于R状态的进程
  • 不可中断状态:是指正在处于内核态关键流程中的进程,并且这些进程是不可打断的,比如常见的等待硬件设备的IO操作,也就是ps命令看到的处于D状态的进程

不可中断状态是系统对进程和硬件设备的一种保护机制

说通俗点,平均负载其实就是平均活跃进程数。最理想的平均活跃进程数就是每个CPU上都刚好运行着一个进程,这样每个CPU都得到了充分的利用。

当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题

除了使用uptime,我们用 cat /proc/loadavg命令也可以查看平均负载:

[root@mufenggrow ~]# cat /proc/loadavg
0.00 0.01 0.05 1/514 14655

前三个数字与uptime一致,后面的:
1/514 表示正在运行的进程数有一个,分母是总进程数
14655 表示正在运行的进程ID为 14655

关于cpu我们之前介绍过一些概念:

CPU个数:即物理CPU数,主板实际插入的CPU数量,可以数不重复的 physical id 有几个(physical id)
CPU核数:单块CPU上面能处理数据的芯片组的数量,如双核,四核等(cpu cores)

逻辑CPU数:一般情况下,逻辑CPU=物理CPU个数x每颗核数。如果不等,表示CPU支持超线程技术

平均负载和cpu个数有一定的关系 比如平均负载为4时意味着什么呢?

多核cpu和多个cpu效果类似

# cat /proc/cpuinfo     #查看CPU的信息
# grep -c ‘model name’ /proc/cpuinfo  #返回CPU的总核心数
  • 在只有4个CPU的系统上,意味着所有的CPU都刚好被完全占用。
  • 在8个CPU的系统上,意味着CPU有50%的空闲。
  • 而在有2个CPU系统上,意味着有一半的进程竞争不到CPU。

其他经验:

如果1分钟,5分钟,15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。

如果1分钟的值远小于15分钟的值,就是说在15分钟之前负载很高,到了1分钟的时候已经下降很多了,甚至负载已经不高了,这时候只需要关注下为什么在15分钟高就行了,不需要介入处理。。

但如果1分钟的值远大于15分钟的值,说明近1分钟负载在增加,这种情况可能是临时性的,也可能还会持续,要持续观察,一旦1分钟的平均负载超过了CPU的数量,意味着系统正在发生过载的问题。

例如:一个单核系统上,平均负载为1.78,0.60,6.56,说明1分钟内,系统有78%的超载,而在15分钟内有556%的超载。

实际生产中,平均负载多高时需要关注

当系统负载持续大于0.7,就要开始排查了,防止情况恶化;
当系统负载持续大于1.0,你就必须手动寻找解决办法,把这个值降下来;
当系统负载达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了,一般不允许让系统达到这个值

常用的性能排查工具

  • stress:Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
  • mpstat:是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有CPU的平均指标。
  • pidstat:是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。

总结

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

请添加图片描述
在这里插入图片描述

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

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

相关文章

推荐 5 个实用 GitHub 项目

本期推荐开源项目目录:1. AI-For-Beginners2. 一个小巧轻便的 PDF 阅读器3. 开源的智能手表4. 开源内容管理系统5. 程序员海外工作/英文面试手册01AI-For-Beginners之前推荐过 Microsoft 出品的 Web 技术栈课程,本开源项目同样是 Microsoft 的 Azure Clo…

go runtime

go 运行时,也称为 go runtime,类似Java中的JVM虚拟机,不过runtime并非是虚拟机。其本身就是每个 go 程序的一部分,它会跟源码一起编译并链接到目标程序中,即便只写了一个 hello world 程序,这个程序中也包含…

day15 二叉树 | 104、二叉树的最大深度 111、二叉树的最小深度 222、完全二叉树的节点个数

题目 104、二叉树的最大深度 递归法(后序)(必须会) // 定义:输入根节点,返回这棵二叉树的最大深度 int maxDepth(TreeNode root) {if (root null) {return 0;}// 利用定义,计算左右子树的最大…

论文笔记:Graph WaveNet for Deep Spatial-Temporal Graph Modeling

IJCAI 2019 1 abstract & intro 时空数据挖掘问题大多数使用邻接矩阵来建模节点之间的属性关系,这种思路的一个基本假设是:节点信息取决于自身和邻居的历史信息。 但这类模型的假设存在着一些问题: 未能充分建模节点之间的依赖关…

宝塔部署springboot,vue,node.js项目

宝塔部署springboot项目: 先将命令转移到jar包所属文件夹中 分为短暂部署和永久部署 短暂部署:java -jar xxx.jar 永久部署:nohup java -jar demo-1.0.0.jar logs_mark.txt 2>&1 & nohup:linux的命令,代表关闭但持续运行 查看898…

52.Isaac教程--操纵杆

操纵杆 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录操纵杆使用游戏机操纵杆使用其他操纵杆使用 Playstation 操纵杆很容易控制运行 Isaac SDK 的机器人,但也可以使用其他控制器。 使用游戏机操纵杆 按照以下步骤校准您的…

微信小程序018小说在线阅读系统书城

管理员的主要功能有: 1.管理员输入账户登陆后台 2.个人中心:管理员修改密码和账户信息 3.用户管理:对注册的用户信息进行删除,查询,添加,修改 4.小说信息管理:对小说信息进行添加,修…

TCP/IP第六章笔记ICMP协议

文章目录6.1 引言6.2 ICMP报文分组格式和类型6.3 ICMP地址掩码请求与应答6.4 ICMP时间戳请求与应答6.5 ICMP端口不可达差错6.6 ICMP的处理(4.4BSD系统下)6.1 引言 第三章在IP选择路由时,如果一个报文最后限制转发次数用完后还传输不到目的地…

【高并发】- 不可不知道的RPC框架服务通信

前言 前面章节讲解了高并发系统中相关指标、为什么要学习高并发设计思想、高并发系统中每个环节的流量处理等思想。本章节讲解服务通信,来帮助大家更好理解系统间通信过程。 1 RPC框架介绍 RPC(Remote Procedure Call,远程过程调用&#xff0…

Win10家庭版和Win10专业版有什么区别?

win10操作系统拥有7个不同的版本,其中win10家庭版和专业版被人们广泛的应用,很多用户都不知道如何区分win10家庭版和专业版,接下来把win10家庭版和专业版有什么不同的地方告诉大家。我们一起来看看吧。 win10家庭版和专业版的区别&#xff1a…

java服务框架高级之微服务保护 Sentinel 限制规则,流控模式,流控效果

初识Sentinel 雪崩问题: 解决雪崩问题的常见方式有四种: 1.超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待 2.舱壁模式:限定每个业务能使用的线程数,避免耗尽…

2023外企还香吗?2022届计算机谈谈入职外企的感受和经历

互联网寒冬,大规模“毕业”的环境下,2023年外企又香了吗? 大家好,我是2022届计算机应届毕业生,毕业入职了一家大型非互联网外企,2022年由于只上了半年班,所以只有半年工资,总收入在1…

【JavaScript速成之路】一文带你初识JavaScript

📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言1,JavaScript1.1,JavaScript概述1.2,Java…

【人工智能学习笔记】人工智能里的数学1——概述

与软件开发相比,人工智能领域需要大量数学知识。主要涉及微积分、线性代数、概率论和最优化。本文主要介绍人工智能里用到了哪些数学知识,试图向您提供一个目录式的、导读式的概述。后期计划一一展开讲解。本文作为我学习人工智能的笔记,主要…

C++继承(上)

我们知道,面向对象有三大特性:封装,继承,多态。封装前面已经说过,这篇文章主要说说继承。 文章目录1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符2. 基类和派生类对象赋值转换…

vue.js客服系统实时聊天项目开发(十四)点击加载展示历史消息列表

当访客一进去聊天界面以后,需要获取一下历史消息展示到界面,并且需要能分页的原理展示 在顶部有一个加载更多记录的按钮,点击就能按分页获取数据 //展示历史消息记录getHistoryList(){var _thisthis;let pagesize5;this.$axios.get(this.ApiH…

Python | 数据类型之列表

知识目录一、定义和遍历1.1 定义列表1.2 打印和截取列表1.3 遍历列表二、增删改查2.1 更新和删除列表2.3 脚本操作符 * in三、函数和方法3.1 函数3.2 方法列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型…

springboot-rocketmq整合NOT_CONSUME_YET问题处理

一、测试流程1.添加POM<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.1</version></dependency>2.配置属性参数# 默认的消息组 rocketmq.producer.…

微信小程序项目初试总结

微信小程序项目初试总结准备工作注册小程序账号获取AppID下载 微信开发者工具下载 HBuilderX安装 scss/sass 编译HBuilderX 的调试新建项目把项目运行到微信开发者工具使用 Git 管理项目把项目托管到码云模块制作通用tabBar首页分类搜索商品列表商品详情加入购物车购物车页面登…

【手把手教你C#如何使用SqlSugar操作MySQL数据库】三 SqlSugar使用案例

SqlSugar 连接数据库、创建数据表、增删改查用法1.SqlSugar 连接MySQL数据库1.创建数据库2.创建库中的数据表3.数据的插入4.数据的查询5.数据更新6.数据保存7.数据删除2.整体案例脚本代码1.SqlSugar 连接MySQL数据库 1.创建数据库 using SqlSugar; public class DB : Singlet…