惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
Y
Y Combinator Blog
Cloudbric
Cloudbric
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cybersecurity and Infrastructure Security Agency CISA
TaoSecurity Blog
TaoSecurity Blog
Security Latest
Security Latest
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
H
Hacker News: Front Page
C
Cisco Blogs
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
Vulnerabilities – Threatpost
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
A
About on SuperTechFans
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
C
CXSECURITY Database RSS Feed - CXSecurity.com
Schneier on Security
Schneier on Security
T
Tenable Blog
N
News and Events Feed by Topic
W
WeLiveSecurity
有赞技术团队
有赞技术团队
AI
AI
爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
Latest news
Latest news
T
The Blog of Author Tim Ferriss
S
Security Affairs
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
Google DeepMind News
Google DeepMind News
The Cloudflare Blog

kekxv 技术日志

基于 kekxv/gitea-pages 与 Gitea Actions 构建静态站点托管服务 Json简单工具 在Windows上运行Code Server:结合WSL打造你的云端VS Code开发环境 安卓sdkmanager工具换源 boost bazel starter bazel 供应商模式 PVE引导丢失修复 NSFW图像检测 警惕c++内置变量指针 关于内网springboot启动慢记录 网页转换为chrome插件 nginx代理的一种使用方式 YOLOv8 训练自己的数据 luckfox-交叉编译之bazel gitea actions CICD 自动化 影音中心Jellyfin快速部署 OCR & 人脸算法 -- opencv dnn tensorflow gpu 安装(ubuntu22.04) 深度学习记录-简单
Linux限制进程使用率
kekxv · 2023-07-20 · via kekxv 技术日志

在使用服务器的时候,有些情况下我们需要对进程进行资源限制,例如限制CPU使用率,使用docker的时候,可以使用deploy.resources.cpus进行限制,而当没有使用docker的时候呢,我们可以考虑使用cpulimit进行限制

准备

首先我们需要检查系统是否有cpulimit命令:

1
which cpulimit

如果提示 :

1
cpulimit not found

则表示没有,需要进行安装,ubuntu/debian系列安装方式为:

1
apt install cpulimit

其他系统请自行查资料,一般情况下yum包管理可以直接使用yum install cpulimit进行安装。

cpulimit 说明

cpulimit是一个用于限制进程CPU使用率的命令行工具。它可以让你控制一个正在运行的进程使用的CPU资源量,从而避免某个进程占用过多的CPU资源导致系统变慢或负载过高。

cpulimit的使用方式如下:

1
cpulimit -l <limit> -p <pid>

其中,<limit>表示需要限制的CPU使用率,取值范围为0100,表示限制的百分比<pid>表示要限制的进程的进程ID

例如,要将进程ID1234的进程的CPU使用率限制为50%,可以运行以下命令:

1
cpulimit -l 50 -p 1234

cpulimit命令会不断检查被限制进程的CPU使用情况,并根据设定的限制值动态调整进程的CPU使用率。

请注意,使用cpulimit命令需要具有足够的权限(通常需要以root用户或具有sudo权限运行)。另外,cpulimit命令只能限制进程的CPU使用率,并不能限制其使用的其他系统资源,如内存磁盘

测试使用

我们可以测试wc命令,看看正常情况的效果:

1
2
3
# 限制 wc 进程 50% 的 CPU 使用率
cpulimit -l 50 -e wc
# 将会输出 Warning: no target process found. Waiting for it...

然后我们新开shell,执行wc 命令,此时将会如下输出:

1
2
3
root@server:~# cpulimit -l 50 -e wc
Warning: no target process found. Waiting for it...
Process 29943 detected

则表示命令正常,可以进行实际控制。

使用示例

有时候我们需要将内网机器暴露到互联网上,供自己测试,这个时候我们可以考虑内网穿透工具,例如 nps 工具,但是这个工具在某种特殊情况下,他会将CPU占满,此时我们就需要对他进行限制。

限制的方式有两种,一种是使用docker启动,使用dockerdeploy.resources方案进行限制。

另一种则是我们这里提到的cpulimit方式进行限制;

首先我们可以用一些方式,将nps启动:自建服务的方式,或者nps start方式启动。

然后我们启动命令测试:

1
2
# 限制 nps 进程 20% 的 CPU 使用率
cpulimit -l 20 -e nps

如果输出Process 29943 detected则表示操作正常,此时可以结束当前进程,然后将cpulimit注册为服务,可以参考 systemd 简单编写 :

/usr/lib/systemd/system/cpulimit-nps.service

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nps资源控制服务
After=network.target

[Service]
User=root
Restart=on-failure
WorkingDirectory=/root/
ExecStart=/usr/bin/cpulimit -l 20 -e nps

[Install]
WantedBy=multi-user.target

然后我们便可以启动服务:systemctl start cpulimit-nps ,然后通过systemctl status cpulimit-nps查看服务情况,
同时可以选择:systemctl enable cpulimit-nps设置为开机启动。

结语

进行CPU资源限制的方法不只有一种,各位可以根据实际的情况,选择适合自己的方式。