CPU使用率获取方法


#CPU使用率
#!/bin/sh
#
#脚本功能描述:依据/proc/stat文件获取并计算CPU使用率
#
#CPU时间计算公式:CPU_TIME=user+system+nice+idle+iowait+irq+softirq
#CPU使用率计算公式:cpu_usage=(idle2-idle1)/(cpu2-cpu1)*100
#默认时间间隔
TIME_INTERVAL=5
time=$(date "+%Y-%m-%d %H:%M:%S")
LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
sleep ${TIME_INTERVAL}
NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')

#系统空闲时间
SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
#CPU总时间
TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
CPU_USAGE=$(echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk '{printf "%.2f", 100-$1/$2*100}')


#打开CPU重用和快速回收
vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30 
然后执行/sbin/sysctl -p让参数生效

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改系統默认的TIMEOUT时间
reuse=$(cat /etc/sysctl.conf|grep net.ipv4.tcp_tw_reuse)
if [ -n "$reuse" ];then 
    sed  -i "s/^net.ipv4.tcp_tw_reuse.*/net.ipv4.tcp_tw_reuse = 1/" /etc/sysctl.conf
else
    echo net.ipv4.tcp_tw_reuse = 1 >> /etc/sysctl.conf
fi
recycle=$(cat /etc/sysctl.conf|grep net.ipv4.tcp_tw_recycle)
if [ -n "$recycle" ];then 
    sed  -i "s/^net.ipv4.tcp_tw_recycle.*/net.ipv4.tcp_tw_recycle = 1/" /etc/sysctl.conf
else
    echo net.ipv4.tcp_tw_recycle = 1 >> /etc/sysctl.conf
fi

sysctl -p


#时间显示
anynowtime=`date +'%Y-%m-%d_%H:%M:%S'`


#获取逻辑CPU个数
#!/bin/bash
echo  "逻辑CPU个数:"
cat /proc/cpuinfo|grep processor|wc -l
echo  "逻辑CPU如下:"
cat /proc/cpuinfo|grep processor


#获取负载
awk '{print $1}' /proc/loadavg


每日
#创建备份脚本
anynowtime=`date +'%Y-%m-%d_%H:%M:%S'
tar zcf /var/log/${anynowtime}.tar.gz /var/log/* 


#备份日志

find /home/josee/ -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;


统计ip访问前十
cat  /data/bkce/logs/nginx/paas_access.log |awk -F" " '{print $1,$6,$7,$8}'|sort | uniq -c | sort -n -k1 | tail -fn 10


#关闭selinux
getenforce=`getenforce`
if [ $getenforce != "Disabled" ];then
    sed  -i "s/^SELINUX=.*/SELINUX=Disabled/" /etc/selinux/config
    setenforce 0
fi


进程判断并启动进程
service=`netstat -tunalp|grep nginx|awk -F" " '{print $1}'`
if [  -n "$service" ];then 
    /opt/logicsvr/logicsvr -c /opt/logicsvr/logicsvr.conf
fi


#修改文件最大打开数
sed -i '/nofile/{d}' /etc/security/limits.conf
echo "* soft nofile 204800" >>/etc/security/limits.conf
echo "* hard nofile 204800" >>/etc/security/limits.conf


#批量创建用户
name="user0"
pass="admin@123"
for (( i=0;i<=9;i=i+1))
                do
                # 用户名以输入用户名+序号组成 
                /usr/sbin/useradd $name$i -d /home/$name$i &> /dev/null
                # 创建默认密码
                echo $pass | /usr/bin/passwd --stdin $name$i &> /dev/null
                done


#干掉sshd
sshd=$(netstat -tunlap|grep sshd|grep ESTABLISHED|awk -F" " '{print $7}'|awk -F"/"  '{print $1}')
if [ -n "$sshd" ];then
    netstat -tunlap|grep sshd|grep ESTABLISHED|awk -F" " '{print $7}'|awk -F"/"  '{print $1}'|xargs kill -9
fi


#解压
cd /opt
tar -zxvf logicsvr.tar.gz



#修改nginx第一内网地址
ip=$(ifconfig |grep inet|sed -n "1p"|awk -F " " '{print $2}')
sed -i "s/listen.*80/listen       $ip:80/" /etc/nginx/nginx.conf
nginx -s reload


#获取内网IP
ip=$(ifconfig |grep inet|sed -n "1p"|awk -F " " '{print $2}')
#修改配置文件的ip
sed  -i "s/^address.*/address=$ip/" /opt/logicsvr/logicsvr.conf


#启动进程
/data/logicsvr/logicsvr -c /data/logicsvr/logicsvr.conf

#logicsvr进程判断并启动进程
logicsvr=`netstat -tunalp|grep logicsvr|awk -F" " '{print $1}'`
if [  -n "$logicsvr" ];then 
    /data/logicsvr/logicsvr -c /data/logicsvr/logicsvr.conf
mkdir -p  /data/log
echo "`date` 拉起logicsvr进程" >> /data/log/logicsvr_monitor.log
fi

posted @ 2020-12-21 23:29  一字并肩大帝-陈灵均  阅读(379)  评论(0)    收藏  举报