我们在使用Linux云服务器的时候,是不是会因为云服务器配置限制问题,导致CPU占用资源导致服务器应用程序崩溃。在这里,我们可以利用 CPULimit 用来按百分比限制进程的 CPU 占用,限制的是实际使用率。它不改 nice 或调度优先级,而是根据系统负载动态调节:进程超限时发 SIGSTOP 暂停,降下来再 SIGCONT 恢复。指定进程下的子进程和线程共用同一上限。跑批处理、编译、备份等不想把机器打满时,用它把 CPU 压在固定比例以内比较直接。
先确定要限制的进程 PID(或按进程名匹配),再设目标百分比,例如只允许用 50% CPU。CPULimit 会在后台盯着该进程,超了就停、没超就继续,无需改应用本身。下面会结合具体命令和参数,说明怎么安装、怎么对单个或多个进程设限,以及常见注意点(如权限、子进程是否一并受限等)。
一、安装 cpulimit
Debian / Ubuntu
sudo apt update sudo apt install -y cpulimit
CentOS / RHEL / AlmaLinux
需先启用 EPEL 源:
sudo yum install -y epel-release sudo yum install -y cpulimit # 或 CentOS 8+/Fedora: # sudo dnf install -y cpulimit
验证安装:
cpulimit -h
二、基本用法与常用命令
cpulimit 通过向进程发送 SIGSTOP/SIGCONT信号来暂停/恢复进程,从而限制其 CPU 占用。注意:停止 cpulimit 后,进程会恢复无限制使用 CPU。
先查目标进程 PID
ps aux | grep 进程名 # 或 top
按 PID 限制(推荐,精确)
限制 PID 12345 的进程最多用 50% 的单核 CPU:
sudo cpulimit -p 12345 -l 50
按进程名限制
限制名为 ffmpeg的进程最多用 40% CPU(只匹配第一个找到的同名进程):
sudo cpulimit -e ffmpeg -l 40
按绝对路径限制(避免同名混淆)
sudo cpulimit -P /usr/bin/python3 -l 30
启动程序时直接加限制
sudo cpulimit -l 50 -- python3 my_script.py
后台运行(不占用终端)
sudo cpulimit -p 12345 -l 50 -b
三、参数说明
| 参数 | 说明 |
|---|---|
-p N |
指定目标进程 PID |
-e NAME |
按可执行文件名匹配 |
-P PATH |
按绝对路径匹配 |
-l N |
CPU 使用率上限(单核 1~100,多核可 >100,如 200 = 2 个核心满占) |
-b / --background |
后台运行 |
-z / --lazy |
目标进程退出后 cpulimit 自动退出 |
-m / --monitor-forks |
同时限制子进程 |
-k / --kill |
超限时直接杀掉进程(而非节流) |
-v |
显示详细调控信息 |

