通过shell脚本实现对服务器异常状态的监测,实现自动化拉起或切换控制。

目前的环境情况是有业务在本地处理完成后,需要将处理完成的数据报送给下一台服务器进行进一步处理。

处理完成的数据将被存放在/dev/shm/wancheng

传输脚本将会监测目录/dev/shm/wancheng下存在的文件,并进行传输;传输脚本可以实现传输完成后将原有路径下的文件删除。

目前发生一个情况,下一层的接收服务器可能会出现宕机的情况。

由此编写如下脚本:

 #!/bin/bash
DU=`du -s /dev/shm/wancheng | awk '{print $1}'`                              //此变量输出目录大小
DF=`df | sed -n 4p | awk '{print $5}' | awk -F% '{print $1}'`                //此变量输出磁盘空间大小
SCP=`ps -ef | grep "scpdata.py" | grep -v grep | wc -l`                      //此变量输出传输脚本是否存活,存活为1,不存活为2
TMP=`du -s /dev/shm/surfing-s1uhttp/local_tmp | awk '{print $1}'`            //此变量输出传输脚本临时处理目录大小

if [ ${DU} -gt 3000000 ] || [ ${TMP} -gt 3000000 ]  && [ ${SCP} -eq 0 ] ; then                //判断业务话单存在大小是否大于某数值,判断传输脚本是否存活;若数值过大,且传输脚本存活,则执行以下命令
  kill -9 `ps -ef|grep 'scpdata.py'|grep -v 'grep'|awk -F ' ' '{print $2}'`        //停止传输脚本
  nohup /mnt/py/scpdata-BY.py > /dev/null &                      //启动备用传输脚本,将原有数据转发给备用接收服务器处理
  ssh 192.168.11.24 /tmp/qidong.sh                    //备用服务器相关程序通过预先编写好的脚本开始启动
  ssh 10.10.10.10 /tmp/by-x.sh                //告知其他相关联的服务器
else
  echo "The original node of the server is delivered normally"
  exit
fi

if [ `ps -ef | grep "scpdata-BY.py" | grep -v grep | wc -l` -eq 1 ];then
echo "Server Transport Switched BYserver"
fi


以上解决了一种情况,需要其他判断方法的可以新增一些IF判断形势,但仍有一种情况,某些程序在一定条件下会自动关闭程序,导致业务丢失,但不就后异常情况就自动恢复了,或重启就能解决此问题,为此编写出如下脚本:

#!/bin/bash
    procnum=` ps -ef | grep "chengxu" | grep -v grep | wc -l`          //检查是否存活
    if [ $procnum -eq 0 ]; then
      echo `date` >> /mnt/probe/bin/log.old/err.log            //记录当前的系统情况信息
      echo `df -h` >> /mnt/probe/bin/log.old/err.log
      echo `free` >> /mnt/probe/bin/log.old/err.log
      echo `uptime` >> /mnt/probe/bin/log.old/err.log
      mv /mnt/probe/dpiprobe/bin/log/* /mnt/probe/dpiprobe/bin/log.old/         //备份程序日志
      /mnt/probe/bin/run.sh            //重新启动程序
      echo "start demo!"
    fi


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。