获取系统负载信息的Unix命令行命令是什么?

Dha*_*ans -3 linux command-line load-average

在 Linux 或 Unix 操作系统中,我收到文本

系统负载

如下。

谁能告诉我这是什么意思以及如何使用 CLI 命令提取系统负载%?

System load: 6.84
Run Code Online (Sandbox Code Playgroud)

tel*_*coM 5

请参阅 Unix 风格系统负载值的 Wikipedia 文章: https://en.wikipedia.org/wiki/Load_(computing)

简而言之,如果这是 Unix 风格的负载平均值,您需要将该值除以系统中可用处理器核心的数量,然后乘以 100以获得百分比值。

事实上,Unix 风格的负载值描述了特定时间段内实际运行 + 等待 CPU 进程的平均数量:通常会报告三个负载值,分别使用 1、5 和 15 分钟的时间窗口。在 Linux 上,等待 I/O 的进程也被计算在内;在大多数 Unix 系统上它们不是。

如果负载值小于可用处理器核心的数量,则意味着系统在平均窗口内并未完全繁忙,并且可以处理更多工作;如果负载值大于处理器核心的数量,则意味着工作量超出了处理器的处理能力。

在大多数类 Unix 系统(包括 Linux)中,您可以使用该uptime命令获取如下输出:

$ uptime
12:11:23 up  5:22,  1 user,  load average: 0.04, 0.05, 0.01
Run Code Online (Sandbox Code Playgroud)

在这些词之后load average:显示 1、5 和 15 分钟时间窗口的负载值。

在 Linux 上,您可以通过读取/proc/loadavg虚拟文件(例如cat /proc/loadavg.

在 Linux 上,您可以将负载平均值转换为如下百分比,例如:

#!/bin/sh
# uses the 5-minute load value
LOADVAL5=$(awk '{ print $2; }' < /proc/loadavg)
NUMCPUS=$(getconf _NPROCESSORS_ONLN)
echo "$LOADVAL5 * 100 / $NUMCPUS" | bc
Run Code Online (Sandbox Code Playgroud)

当然,这个脚本没有经过优化,因此不适合重复运行;如果您正在开发监控系统,您应该在程序代码中进行计算,而不是运行外部脚本来计算负载百分比。