定时 监控 shell 服务宕机自动重启,并发送短信通知

监控代码

  • 注意 手机号和发送短信的地址,需要你自己去实现
#/bin/sh
#fox.风
#这里是要监控的服务 如 nginx
pid=`ps aux | grep nginx |grep "start" |awk '{print $2} '   | head -1  `
#这里填写手机号
mobile =(182XXXXX,183XXXXXXX)

if [ "$pid" == ""  ] 
then
	for var in ${mobile[@]}
	do 
	    curl '这里是发送短信的URL地址mobile='$var
	done
	
	echo "server start ...."
	cd /www/wwwroot/www.lanmps.com
	#这里是监控脚本,需要你自己去写 启动脚本哦
	./start.sh
	
	exit 1
fi
echo " service existed ..."

系统定时任务

加入到系统的定时任务中
比如5秒钟执行一次
加入方法略

linux centos 定时检测服务并启动它

有一个智能组网的 程序在linux 中运行,如果网络掉线了,这个程序也掉线了,它并不能自动连线,这里直接执行该程序,让改程序再启动重连

check.sh

#!/bin/bash
# program : 判断进行是否存在,并重新启动
DIR=$(cd $(dirname $0); pwd)
DATE=`date +%F\ %T`

echo "${DATE} starting "
${DIR}/loading.sh

loading.sh

#!/bin/expect

spawn /usr/sbin/pgyvpn
expect "*,quit"
send "0\r"

注意,如果 expect 不存在,那么先安装yum install expect -y

最后加入系统定时任务 crontab -e 报错即可

# 每30分钟执行一次
*/30 * * * * /bin/bash /www/crontab/check.sh >> /www/crontab/check.log

linux centos 定时检测服务并启动它(该服务会自动退出)

有一个程序,如果程序出问题报错,或者掉网的时候会自动退出,但是我们要求该程序时刻 运行着
check.sh

#!/bin/bash

DIR=$(cd $(dirname $0); pwd)
DATE=`date +%F\ %T`

function check(){
    # 检测 pgyvpn 程序 是否存在,如果存在统计 进程个数
  count=`ps aux | grep pgyvpn| grep pgyvpn |grep -v "grep" |awk '{print $2} ' | wc -l`
  echo $count

  if [ 0 == $count ];then
    #执行脚本
    ${DIR}/behaviors.sh
  else
    echo "${DATE} starting "
  fi
}

check behaviors.sh

behaviors.sh

#!/bin/bash

DIR=$(cd $(dirname $0); pwd)

#调用关闭 进程脚本
${DIR}/stop.sh


#打印出当前的 pgyvpn 进程:grep pgyvpn 查询的 pgyvpn 进程,grep -v "grep" 去掉grep进程
jmsThread=`ps aux | grep pgyvpn| grep pgyvpn_svr | grep -v "grep"`
echo $jmsThread

#查询 pgyvpn 进程个数:wc -l 返回行数
count=`ps aux | grep pgyvpn| grep pgyvpn_svr  | grep -v "grep" |awk '{print $2} ' | wc -l`
echo $count


sec=7
#开始一个循环,以判断进程是否关闭

for var in 1 2
do
 if [ $count -gt 0 ]; then
  #若进程还未关闭,则脚本sleep几秒
  echo sleep $sec second the $var time, the thread is still alive
  sleep $sec
 else
  #若进程已经关闭,则跳出循环
  echo "break"
  break
 fi
done

#调用启动脚本
nohup  ${DIR}/start.sh  >/dev/null 2>&1 & 

start.sh

#!/bin/bash
pgyvpn

stop.sh

#!/bin/bash

pkill -9 pgyvpn

echo "kill pgyvpn"

最后加入系统定时任务 crontab -e 报错即可

# 每2分钟执行一次
*/2 * * * * /bin/bash /www/crontab/check.sh >> /www/crontab/check.log
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风.foxwho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值