上一秒使用的 CPU 时间

上一秒使用的 CPU 时间

我正在用 Bash 编程,想找出上一秒使用了多少 CPU 时间。我还需要分离系统时间(内核模式)和用户时间(用户模式)。

我已经调查过顶部但是我是 UNIX/Terminal 的新手,所以我无法从那里得到一些东西。

感谢您的帮助。

答案1

您可以使用该vmstat(8)实用程序。默认情况下,Linux 系统通常不安装该实用程序,因此如果您的系统缺少该实用程序,则需要使用系统的包管理器进行安装。
在 Fedora Core 中,它是软件包的一部分sysstat

示例输出:

$ vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0    752 136480  31204 392176    0    0     2     1   40  101  0  0 99  0
 0  0    752 138268  31344 392416    0    0     0     0   59  205  0  1 99  0

第一行是重启以来的平均值,第二行是最后一秒的采样。

您想要 CPU 统计信息,显然,各列的含义是(来自手册页):

   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code.  (user time, including nice time)
       sy: Time spent running kernel code.  (system time)
       id: Time spent idle.  Prior to Linux 2.5.41, this includes IO-wait time.
       wa: Time spent waiting for IO.  Prior to Linux 2.5.41, included in idle.
       st: Time stolen from a virtual machine.  Prior to Linux 2.6.11, unknown.

您可以使用awk(1)来获取值,例如:

vmstat=$(vmstat 1 2 | tail -1)

# Kernel time
sys=$(echo "$vmstat" | awk '{print $14}')

# User time
sys=$(echo "$vmstat" | awk '{print $13}')

相关问题:如何获取 Linux 上的整体 CPU 使用率(例如 57%)[关闭]

这应该适用于 Linux、FreeBSD 以及 MacOSX。

相关内容