经常会遇到云平台下发虚拟机速度缓慢、页面登陆卡顿、服务相关线程僵尸的情况,针对这种情况,写了个定期去重启服务的脚本,让平台更优质的去提供服务。
以下为脚本内容,欢迎批评交流。
#!/bin/bash
# 抓取服务进程和时间
pid1=`service tomcat6 status | cut -b 46-50`
echo tomcat6运行时间
ps -p $pid1 -o etime=
pid2=`service casserver status | cut -b 34-38`
echo casserver运行时间
ps -p $pid2 -o etime=
#处理运行时间为判断变量
time1=`ps -p $pid1 -o etime`
time2=`ps -p $pid2 -o etime`
echo $time1 > time1.txt
echo $time2 > time2.txt
total1=$( awk 'NR==0{print;next}{n=split($NF,a,"-|:");if(n==2)$NF=a[1]*60+a[2];if(n==3)$NF=a[1]*3600+a[2]*60+a[3];if(n==4)$NF=a[1]*86400+a[2]*3600+a[3]*60+a[4]}1' time1.txt | cut -b 9-15)
total2=$( awk 'NR==0{print;next}{n=split($NF,a,"-|:");if(n==2)$NF=a[1]*60+a[2];if(n==3)$NF=a[1]*3600+a[2]*60+a[3];if(n==4)$NF=a[1]*86400+a[2]*3600+a[3]*60+a[4]}1' time2.txt | cut -b 9-15)
#判断进程是否需要重启
time10=864000 #设置判断时间节点
#比较时间节点
if [ $total1 -lt $time10 ];then
echo tomcat6服务还未超时,不需要重启
elif [ $total1 -gt $time10 ];then
echo tomcat6服务已经超时,开始重启服务
service tomcat6 restart
fi
if [ $total2 -lt $time10 ];then
echo casserver服务还未超时,不需要重启
elif [ $total2 -gt $time10 ];then
echo tomcat6服务已经超时,开始重启服务
service casserver restart
fi
#######################################################################
#var=`service tomcat6 status | cut -b 28-35`
#if [ $var == 'running' ]
#then
#service tomcat6 restart
#else
#echo 'tomcat6 is not availble'
#fi
#var1=`service casserver status | cut -b 17-23`
#if [ $var1 == 'running' ]
#then
#service casserver restart
#else
#echo 'casserver is not availble'
#fi