java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-07-01 16:15:15 | 查看: 5076| 回复: 1

linux(centos)定时检查jar包运行状态若退出就重启

linux(centos)定时检查jar包运行状态若退出就重启
linux后台运行jar包,有时会意外退出,linux(centos)定时计划运行sh检查jar包运行状态并重启jar包
1、新建restart.sh

cd /home
touch restart.sh
2、权限设置744(需要注意定时任务的用户有没有运行权限)
chmod 744 restart.sh
3、编辑restart.sh 文件:
#!/bin/sh
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/java/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/dt.jar:$JAVA_HOME/tools.jar
#java

jarDir="/home"
jar="jubo-chat-newserver-jueniu-1.1-0.0.1.jar"
logFile="/home/logs/restart.log"

restart(){
cd ${2}
if [ ! -f ${1} ];then
echo "jar not exist" >> ${logFile}
return
fi
(java -jar ${1} &)
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
}

check(){
count=$(ps -ef | grep ${1} | grep -v "grep")
if [ -n "${count}" ];then
#echo "`date` ${1} is running" >> ${logFile}
echo "`date` ${1} s running"
else
restart ${1} ${2}
echo "`date` ${1} is down. restartig" >> ${logFile}
#echo "`date` ${1} is down"

fi
}

check ${jar} ${jarDir}

4、执行检查是否正常
./restart.sh
若报bin/sh^M: bad interpreter: No such file or directory
原因:.sh脚本在windows系统下用记事本文件编写的。不同系统的编码格式引起的。
解决方法:修改.sh文件格式
(1)使用vi工具
vi test.sh
(2)利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
(3) 利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)
注:其实,在windows下通过git bash可以直接编写unix格式.sh!

5、加入系统定时任务
每小时检查jar包运行,如果退出重启
crontab -e
* */1 * * * /bin/sh /home/restart.sh

linux(centos)定时检查jar包运行状态若退出就重启
linux后台运行jar包,有时会意外退出,linux(centos)定时计划运行sh检查jar包运行状态并重启jar包


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/829_1_1.html

普通会员

160

帖子

12

回复

165

积分
沙发
发表于 2019-07-01 17:00:01

linux定时杀死java程序,然后再重新启动(先自杀,再重启)脚本,适用于业务系统定时重启等

编写自杀脚本(原理,先找到进程号杀掉,然后调用重启脚本启动程序):

#!/bin/sh
ps -ef|grep jubo-chat-newserver-jueniu-1.1-0.0.1.jar|grep java |awk '{print $2}'|xargs kill -9
sh /home/restart.sh


您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018