shell 定时检查应用进程并拉起停止的进程
-
检查脚本:
进程是否启动,若未启动则调用进程的启动脚本进行启动
#!/bin/bash #demo:应用程序名,用于输出应用是否启动的日志输出 #demo-test.jar: 用于查询进程的唯一标识 #/data/demo_de: 程序部署路径 #/data/demo_dev/start.sh: 启动脚本所在的绝对路径,执行该脚本可启动程序 #若需要扫描多个进程 monitorArr=([0]="demo,demo-test.jar,/data/demo_dev,/data/demo_dev/start.sh" [1]="demotest,demo-test1.jar,/data/demo_dev,/data/demo_dev/start1.sh") monitorArr=([0]="demo,demo.jar,/data/demo,/data/demo/starts.sh") function checkProgress(){ #根据唯一标识来查找进程 ps -ef | grep "$2" | grep -v "grep" if [ "$?" -eq 0 ] then #echo $(date "+%Y-%m-%d %H:%M:%S") "$1 already started!" >> /data/watchdog/check-logs.log else echo $(date "+%Y-%m-%d %H:%M:%S") "$1 has been stopped ! Begin to start $1!" >> /data/watchdog/check-logs.log cd $3 sudo sh $4 echo $(date "+%Y-%m-%d %H:%M:%S") "$1 has been started!" >> /data/watchdog/check-logs.log fi } for value in ${monitorArr[@]} do arr=(`echo ${value}|awk '{len=split($0,value,",");for(i=1;i<=len;i++) print value[i]}'`) checkProgress ${arr[0]} ${arr[1]} ${arr[2]} ${arr[3]} done
-
添加定时任务,执行检查脚本:
crontab -e
-
内容编辑为,每分钟执行一次检测脚本
* * * * * /data/watchdog/check.sh
-
查看是否添加成功
crontab -l
-
重启cron:新加入的定时任务不会马上执行,一般要等一会儿
sudo service cron restart
注意,新创建的cron作业,不会马上执行,至少要过2分钟才执行。如果重启cron服务则会马上执行。
-