一个简单的服务定时重拉脚本

  • Post author:
  • Post category:其他

一、背景

   应用服务,或者中间件服务启用后,如果没有守护进程,有时候可能因为未知原因进程被杀死,

为了减少这种后续修复的不必要成本,可以写个简单的服务重拉脚本

二、脚本编写

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执行一次定时任务怎么实现?

 


版权声明:本文为weixin_48617665原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。