• 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
    
  • 相关阅读:
    Docker镜像与仓库(四)
    Docker网络与存储(三)
    Docker基本使用(一)
    虚拟化KVM之优化(三)
    修改CENTOS7的网卡ens33修改为eth0
    虚拟化KVM之安装(二)
    虚拟化KVM之概述(一)
    Python不同版本打包程序为.exe文件
    JSON
    同源策略(same-origin policy)及三种跨域方法
  • 原文地址:https://www.cnblogs.com/gerenboke/p/12741041.html
Copyright © 2020-2023  润新知