centos7中进行资源限制,使用的仍然是cgroup,只是配置接口使用的systemd。
下文将介绍如何使用systemd进行资源限制。
Step1 编写unit文件
命令为my-demo.service
整个文件如下:
[Unit]
Description=My-demo Service
[Service]
Type=simple
User=orange
ExecStart=/bin/bash /home/orange/test.sh
MemoryAccounting=true
MemoryLimit=200M
[Install]
WantedBy=multi-user.target
-
关于Type的定义
- simple 默认类型,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切都退出。
- forking 标准Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,父进程退出,留下变成Deamon精灵的子进程。
- oneshot 表示服务类型就是启动,执行完成后,没进程存在。
-
User字段表示指定用户启动程序。
-
MemoryLimit字段表示限制服务的物理内存占用,如果超过会被系统自动Kill。
另外,test.sh的脚本定义如下,作用是耗内存:
#!/bin/bash
tmp="a"
while [ True ]
do
tmp=$tmp$tmp
done
Step2 将上述的文件拷贝到/usr/lib/systemd/system/目录下
# cp my-demo.service /usr/lib/systemd/system/
Step4 配置开机启动
# systemctl enable my-demo.service
ln -s'/usr/lib/systemd/system/my-demo.service' '/etc/systemd/system/multi-user.target.wants/my-demo.service'
输出表明,注册的过程实际上就是将服务链接到/etc/systemd/system/目录下。
Step5 测试
启动服务
# systemctl start my-demo.service
查看服务是否已经启动
# systemctl status my-demo.service
查看进程占用内存
# top
可以看到内存占用在上升,大约不到1分钟,就会看到进程由于内存超出限制而被Kill。
可以在/var/log/message中看到被Kill的记录。
参考
https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/150.html
Just try, don't shy.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现