linux基本功系列之uptime命令

时间:2023-02-24 15:21:24

linux基本功系列之uptime命令

前言???????????? 想要学好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 以及上下文切换等性能指标。

总结

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

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