监控代码
注意
手机号和发送短信的地址,需要你自己去实现
#/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