如何在 Linux 上使用 bash 命令导致 CPU 峰值?

linuxoperating systemopen source更新于 2026/2/15 2:22:17

如果您曾经编程,那么您可能观察到过某些情况和场景:程序卡住或进程陷入无限循环,从而给处理该进程的线程核心带来压力。

很多情况下都存在这种情况。

我们通常会使用不同的技术来避免这种情况,例如在代码逻辑中处理它们或使用第三方工具来处理它们。

Linux 还为我们提供了一个命令,可以用来跟踪 CPU 和内存使用情况的不同参数。该命令是 top。只需在终端中输入以下命令,您将看到一个不断变化的表格状输出。

示例

请考虑以下示例 −

Processes: 480 total, 2 running, 478 sleeping, 1914 threads
14:36:22
Load Avg: 2.33, 3.43, 3.41 CPU usage: 20.68% user, 10.90% sys, 68.40% idle
SharedLibs: 263M resident, 53M data, 254M linkedit.
MemRegions: 179160 total, 1887M resident, 55M private, 494M shared.
PhysMem: 8108M used (1722M wired), 82M unused.
VM: 3412G vsize, 2318M framework vsize, 5752706(0) swapins, 6194358(0)
swapouts. Networks: packets: 22871569/28G in, 5756073/1771M out.
Disks: 6360234/144G read, 5499350/85G written.

PID COMMAND %CPU TIME #TH
6720 Terminal 51.9 02:49.30 8
130 WindowServer 34.0 07:17:41 12
0 kernel_task 11.8 03:23:39 178/4
24506 top 8.3 00:11.75 1/1

输出乍一看可能有点复杂,但我们唯一需要考虑的列是 %CPU。它表示当前任务占用的 CPU 百分比。请注意,在我运行的进程中,它很少超过 20%。

现在,为了在 CPU 中创建峰值,我们可以使用不同的方法。

第一个也是最常见的方法是使用 stress 命令。 stress 命令与 CPU 核心数和/或您希望核心达到最大运行时间的超时时间一起使用。

如果您尚未安装 stress,可以使用以下命令安装它 −

对于 Ubuntu −

sudo apt-get install stress

对于 Mac −

brew install stress

语法

stress --cpu n

或者

stress --cpu n --timeout time

您可以使用以下任一命令

我们使用第一个命令,该命令将要求 stress 命令最大化我们机器的两个核心。

命令

考虑下面显示的命令 −

immukul@192 ~ % stress --cpu 2
stress: info: [25675] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

输出

PID    COMMAND %CPU TIME #TH
25676  stress 98.5 00:36.23 1/1
25677  stress 98.4 00:36.42 1/1

另一种不使用第三方软件包实现此目的的方法是使用下面显示的简单 Linux 代码 −

for i in 1 2 3 ; do while : ; do : ; done & done

上面的一行代码将导致操作系统的三个核心达到最大负载。

命令

immukul@192 Downloads % for i in 1 2 3 ; do while : ; do : ; done & done
[2] 25691
[3] 25692
[4] 25693

输出

PID    COMMAND %CPU   TIME    #TH
25693  zsh     81.7  00:57.12 1/1
25691  zsh     81.4  00:57.00 1/1
25692  zsh     78.6  00:57.00 1/1

相关文章


有用资源