通过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
发表评论