Linux使用CPULimit限制进程对CPU的使用(支持动态监测)
2021-12-28 16:14
423 查看
Linux使用CPULimit限制进程对CPU的使用(支持动态监测)
作者:Oto_G
QQ:421739728
转载请标明原作者
环境
我的运行环境是centos7.9,并且安装sar和cpulimit
代码
废话不多说,上代码
#!/bin/bash # 动态限制进程对CPU的使用 # cpu总体使用率超过rate就开始检测进程CPU使用率 rate=50 # 如果单进程CPU使用率超过180则将它限制到170(因为我的服务器是双核CPU,所以最高占用显示的是200,单核就是100以此类推) cpul=180 cpus=170 # 如果单进程CPU使用率超过110则将它限制到90(有时候多个进程一起运行导致总的CPU使用率过高,这两个门限就是控制这种情况) cpuf=110 cput=90 # 存限制过的进程号,以防短时间内再次限制该进程 declare -A limitMap while : do # 用sar来检查总CPU使用率,请根据自己实际情况修改 sar -u 1 5 | awk '{if($1 == "平均时间:" && $3 > '${rate}')print ($3)}' > /root/cpuLimitBash/w1.tmp while read cpuUse do echo 'cpuUse='$cpuUse # 用top检查单个进程的CPU使用率 top -bn1 | awk '{if(NR>=8 && $9>'${cpul}')print ($1,$2,$9)}' > /root/cpuLimitBash/w2_1.tmp while read pid user cpu do # 如果该进程不在limitMap里面就用cpuLimit限制 if [ ! -n "${limitMap[$pid]}" ] then echo ' pid='$pid,'user='$user,'cpu='$cpu # 记录限制该进程的时间和PID limitMap[$pid]=`date '+%s'` echo " cpulimit -p "${pid}" -l "$cpus # 开后台限制该进程,如果不用后台会导致循环卡在这,直到进程销毁 nohup cpulimit -p ${pid} -l ${cpus} > /root/cpuLimitBash/cpuLimitLogging.log 2>&1 & fi done < /root/cpuLimitBash/w2_1.tmp top -bn1 | awk '{if(NR>=8 && $9>'${cput}' && $9<'${cpuf}')print ($1,$2,$9)}' > /root/cpuLimitBash/w2_2.tmp while read pid user cpu do if [ ! -n "${limitMap[$pid]}" ] then echo ' pid='$pid,'user='$user,'cpu='$cpu limitMap[$pid]=`date '+%s'` echo " cpulimit -p "${pid}" -l "$cput nohup cpulimit -p ${pid} -l ${cput} > /root/cpuLimitBash/cpuLimitLogging2.log 2>&1 & fi done < /root/cpuLimitBash/w2_2.tmp done < /root/cpuLimitBash/w1.tmp # 循环每五秒检测一次 sleep 5 dateNow=`date '+%s'` # 如果limitMap里有待超过8分钟的PID就将其从limitMap中删除,这里的时长请根据自己实际需求来设置 for key in ${!limitMap[@]} do es=`expr $dateNow - ${limitMap[$key]}` if [ $es -gt 480 ] then unset limitMap[$key] fi done done
效果展示
相关文章推荐
- Linux中使用cpulimit限制进程的cpu使用率
- Linux 中使用 cpulimit 限制进程 cpu 使用率
- 限制 某进程 使用最大CPU资源 _ cpulimit _ 参考
- Linux---使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
- linux下通过使用taskset命令来限制进程的CPU
- 使用taskset命令来限制进程的CPU
- rlimit Linux下限制资源的使用(Limiting Resource Usage)
- Linux:限制CPU进程使用率
- Linux下进程使用nohup或daemon进入后台CPU利用率100%
- Linux下限制进程的CPU利用率
- Linux下的进程资源的限制(struct rlimit)详解
- linux中限制用户进程CPU和内存占用率
- 使用psutil库监控linux的系统资源和自定义进程的cpu 内存占用。
- Linux VPS通过安装CPULimit来限制CPU使用率
- RH413-在Linux下限制用户使用的进程数
- 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
- iftop是一个很好用的实时流量监测程序,跟使用iftop查看linux连接进程占用的实时流量
- linux中限制用户进程CPU和内存占用率
- linux下使用taskset设置进程cpu绑定不起作用
- linux使用top命令跟踪进程的CPU占用率、内存使用率