从零开始学Shell之uptime命令

前言

除了top命令,查看系统当前情况,我们还可以使用uptime命令。

uptime命令

功能

uptime的主要功能是告诉我们系统运行了多久。除此之外还有如下信息:

  1. 由多少用户连接到系统
  2. 系统过去1分钟,5分钟,15分钟的平均负载

ps:查看更多登陆用户信息可以使用w和who命令

如何理解平均负载?

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

  1. 可运行状态:可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
  2. 不可中断进程:不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的 比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态进程。不可中断状态实际上是系统对进程和硬件设备的一种保护机制

那么最理想的情况就是每个CPU上面都刚好运行着一个进程,这样每个CPU都得到充分利用。
例如:平均负载是2时

  1. 在2个CPU的机器上,所有CPU都被占用。
  2. 在4个CPU的机器上,50%的CPU被占用。
  3. 在1个CPU的机器上,一半的进程竞争不到CPU。

ps:我们可以看到平均负载有三个值,分别是1分钟,5分钟和15分钟的平均负载。通过比较这三个值,我们可以了解到系统在过去一段时间内的复杂变化和接下来的负载走向。比如一台4个CPU的机器,运行uptime的平均负载是3.98,6.98,4.23。那么我们可以得出,过去5分钟系统的平均负载很高,但是1分钟内已经回到正常水平,整个15分钟内都是一个平均正常水平。

ps:平均负载和CPU使用率没有直接关系。因为对于平均负载来说除了CPU使用率外,不可打断进程(等待IO)也会导致升高。

参数

-p

以更人性化的格式显示系统运行时间。
ps:加了这个参数只会显示系统运行时间这个信息了。

### 不加-p,eg:
15:45:28 up 177 days,  4:41,  6 users,  load average: 1.11, 3.33, 3.59
### 加-p,eg:
up 25 weeks, 2 days, 4 hours, 42 minutes

-s

显示系统启动时间

eg:
2018-09-12 11:04:10

-V

显示版本信息。
ps:procps是一个实用程序包,主要包括ps top kill等程序主要用来显示与控制一些系统信息,进程状态之类的内容。

总结

接下来针对性的学习如何分析系统性能排查问题的命令,要努力了。