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
posted @ 2020-04-20 22:20  一只小白呀  阅读(184)  评论(0编辑  收藏  举报