Cpu_Limit.sh

!/bin/bash

auth:George

func:sys info check

version:v1.0

sys:centos6.x/7.x

set -e
[ $(id -u) -gt 0 ] && exit 1

cpu使用超过百分之多少进行限制

PEC_CPU = 80

限制进程使用百分之多少,如果进程为多线程,单个CPU限制为85,如果多核心,就需要按照比例写,例如CPU为2c,像限制多线程占比80%,就写170

LIMIT_CPU=85

日志

LOG_DIR=/var/log/cpulimit/

超过阈值进程pid

PIDARG=$(ps -aux|awk -v CPU=${PEC_CPU} '{if($3 > CPU) print $2}')
CPULIMITCMD=$(which cpulimit)

install_cpulimit(){
[ ! -d /tmp ] && mkdir /tmp || cd /tmp
wget -c https://github.com/opsengine/cpulimit/archive/v0.2.tar.gz
tar -zxf v0.2.tar.gz
cd cpulimit-0.2 && make
[ $? -eq 0 ] && cp src/cpulimit /usr/bin/

}

do_cpulimit(){
[ ! -d ${LOG_DIR} ] && mkdir -p ${LOG_DIR}
for i in ${PIDARG};
do
MSG=$(ps -aux |awk -v pid=$i '{if($2 == pid) print $0}')
echo ${MSG}
[ ! -d /tmp ] && mkdir /tmp || cd /tmp
nohup ${CPULIMITCMD} -p $i -1 ${LIMIT_CPU} &
echo "$(date) -- ${MSG}" >> ${LOG_DIR}$(date +%F).log
done
}

main(){
hash cpulimit
if [ $? -eq 0 ];then
do_cpulimit
else
install_cpulimit && do_cpulimit
fi
}

main

猜你喜欢

转载自www.cnblogs.com/gerenboke/p/12741041.html
.sh
SH
cpu