一、下载源码
官网地址:https://gitcode.com/gh mirrors/cp/cpulimit
二、修改Makefile
执行make
编译出错:
修改 cpulimit.c,将 头文件中的一个time.h屏蔽掉一个
再次make,编译通过,目录下生成可执行文件cpulimit。
三 使用方法
cpulimit的用法
cpulimit 是一个用于限制进程 CPU 使用率的小工具。你可以指定某个进程的 PID 或可执行程序名称来控制它的 CPU 使用情况,避免某个进程过度占用系统资源。
基本用法
cpulimit -l <限制百分比> -p <进程PID> -e <可执行文件名称> [选项]
常用选项
选项 描述
-l <百分比> 限制 CPU 使用率(例如 -l 50 限制为 50%)
-p <PID> 限制指定进程的 PID
-e <名称> 限制通过进程名指定的可执行文件
-b 后台运行 cpulimit
-z 如果进程不存在则等待,直到进程启动再限制
-v 显示详细信息(verbose mode)
-h 显示帮助信息
示例
1. 限制某个 PID 的 CPU 使用率
cpulimit -p 12345 -l 30
将 PID 为 12345 的进程 CPU 使用率限制在 30%。
2. 限制某个进程名称的 CPU 使用率
cpulimit -e firefox -l 40
将 firefox 进程的 CPU 使用率限制在 40%。
3. 后台限制某个进程的 CPU 使用率
cpulimit -p 12345 -l 50 -b
将 PID 为 12345 的进程限制为 50%,并将 cpulimit 本身放入后台。
4. 等待进程启动并限制 CPU 使用率
cpulimit -e my_program -l 25 -z
如果 my_program 进程未运行,cpulimit 将等待它启动并限制其 CPU 使用率为 25%。
注意事项
以 root 权限运行:如果要限制的进程不属于当前用户,需要使用 sudo 运行。
sudo cpulimit -p 12345 -l 20
多核系统:cpulimit 的限制是针对 单核 的。如果你有多核 CPU,限制值会应用于每个核心。例如,在 4 核系统上,50% 的限制表示最多使用 200% 的 CPU(4 核中的 2 核全速运行)。
长期监控:cpulimit 不会直接修改进程优先级,而是通过定期暂停和恢复进程来实现限制。因此,它更适合临时限制 CPU 使用,而非长期监控。
总结
cpulimit 是一个轻量级工具,适用于临时限制进程的 CPU 占用,避免系统资源被单个进程大量消耗。它的用法简单,可以通过进程 ID 或名称快速应用限制。如果你需要更持久的资源管理,可以考虑使用 cgroups 或 systemd 的资源管理功能。
问题:如果一个程序会启动两个进程,怎么使用cpulimit
如果一个程序启动了多个进程,你可以针对 每个进程 分别使用 cpulimit,通过 PID 或 可执行文件名 进行限制。这里有几个解决方法:
方法 1:根据 PID 限制每个进程
使用 ps 或 pgrep 找到两个进程的 PID:
pgrep <程序名>
例如,如果程序名为 my_program,运行:
pgrep my_program
假设输出如下:
12345
12346
针对每个 PID 运行 cpulimit:
cpulimit -p 12345 -l 30 -b
cpulimit -p 12346 -l 30 -b
这会将两个进程的 CPU 使用率分别限制在 30%。
方法 2:根据进程名限制所有相关进程
如果多个进程使用相同的可执行文件名,可以通过 进程名 统一限制。
但是,请注意这种方式会对 每个匹配的进程 应用限制。
cpulimit -e my_program -l 30 -b
这会将所有名为 my_program 的进程的 CPU 使用率限制在 30%(每个进程单独占用 30%)。
方法 3:通过 shell 脚本自动限制所有进程
如果进程名较多或你不想手动一个个限制,可以编写一个脚本来自动查找并限制每个进程。
#!/bin/bash
# 获取所有目标进程的 PID
PIDS=$(pgrep my_program)
# 遍历每个 PID,应用 cpulimit
for PID in $PIDS; do
echo "限制进程 $PID 的 CPU 使用率为 30%"
cpulimit -p $PID -l 30 -b
done
保存为 limit_cpu.sh,并赋予可执行权限: