一、背景
应用服务,或者中间件服务启用后,如果没有守护进程,有时候可能因为未知原因进程被杀死,
为了减少这种后续修复的不必要成本,可以写个简单的服务重拉脚本
二、脚本编写
1、脚本示例如下
#!/bin/bash
num=`netstat -nlp | grep ${服务关键字} | wc -l`
#echo $num
if [ $num != ${数量按实际填写} ] ;then
ps aux |grep ${服务关键字} |grep -v grep | awk '{print $2}' |xargs -l kill -9 > /dev/null 2>&1
num=`netstat -nlp | grep ${服务关键字 | wc -l`
#echo $num
if [ $num == 0 ] ;then
cd ${应用1相应目录} && nohup ./bin/${服务命令} -r . > /dev/null 2>&1 &
cd ${应用2相应目录} && nohup ./bin/${服务命令} -r . > /dev/null 2>&1 &
fi
fi
2、注释
# |xargs -l
|xargs 可以读取标准输入和管道中的数据
-l 可以保证输入的数据按行输入(有时候光|xargs是无法按行前面输入的 ,比如前面是ll命令等)
# > /dev/null 2>&1 &
让前面启用应用的命令以后台进程方式运行,并不需要手动回车退出夯死状态
三、操作流程
1、添加crontab定时任务 每五分钟执行一次
crontab -e
*/5 * * * * /usr/bin/sh /root/jun/monitor.sh
题外话: 每10s执行一次定时任务怎么实现?