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  运维界的小学生  阅读(519)  评论(0)    收藏  举报

导航