daquan

jar进程常驻后台运行以及crontab计划任务的自动开启与关闭

测试服务器的jar进程需要常驻后台运行,于是我选择脚本实现此后台进程常驻并间隔10s(可根据需要调整)检查一次进程是否存在,不存在时则自动启动该进程,并根据发生的事件发送邮件通知。而且/tomcat_jar/qiutanspider.jar文件需要经常更新,并能保证文件更新后jar进程可以自动重启。

daemon_jar.sh
#!/bin/bash

#date=2017-05-26
#Description:jar Resident background process

# 添加到crontab里面,每分钟执行一次。

for i in `seq 1 6`;do

now=`date "+%Y%m%d%H%M%S"`
ps -ef|grep "/tomcat_jar/qiutanspider.jar"|grep -v "grep"

#如果$?不等于0则说明jar进程不存在,那么启动进程。
    if [ $? -ne 0 ];then
        echo "${now}: jar process not-existent" &>> /tomcat_jar/jar_process_check.log
        (/usr/local/jdk1.8.0/bin/java -Xms512m -Xmx2048m -jar /tomcat_jar/qiutanspider.jar &)   &>> /dev/null  #注意此处如果进程不进入后台运行则该脚本不会继续向下执行。
    	if [ $? -ne 0 ];then
    		echo  "The jar process start failed, please check." |mail -s "jar process" xxxx@qq.com
    	else
    		echo  "The jar process start successful." |mail -s "jar process" xxxx@qq.com
   		fi
    fi
    #每10s检查一次进程是否存在
    sleep 10
done

华丽的分割线***

auto_update_jar.sh
#!/bin/bash
# date=2017-05-27
#当开发上传新的jar文件到相关路径下后手动执行此脚本,当然也可以再自动化一些,每隔几秒检测一次此jar文件是否变化。根据需要自行编写。

#关闭crontab 里的daemon_jar.sh计划任务
sed -i '/daemon_jar.sh/s/^/#/' /var/spool/cron/root

sleep 1

# kill掉daemon_jar.sh进程
ps -ef | grep "daemon_jar.sh"|grep -v "grep"|awk '{print $2}'|xargs kill -9

sleep 1

# kill 掉qiutanspider.jar进程
ps -ef | grep "/tomcat_jar/qiutanspider.jar" |grep -v "grep"|awk '{print $2}'|xargs kill -9

sleep 2

#开启crontab 里的daemon_jar.sh计划任务
sed -i '/daemon_jar.sh/s/#//' /var/spool/cron/root

另markdonw用法:http://www.cnblogs.com/back-man/p/5012746.html

posted on 2017-05-27 23:15  运维界的小学生  阅读(471)  评论(0)    收藏  举报

导航