在centos等linux系统中,Java项目偶尔会挂掉。

所以我们需要一个定时任务,检测项目存活与否,如果挂了,重启之。

1新建一个文件,autoRestart.sh

cd /var/www/server  // 我的项目主目录,请自行修改

vim autoRestart.sh

2脚本内容如下:

#!/bin/sh

# 防止脚本不生效 此处NM是个坑 试了好多次才找到 如果下面启动jar的脚本执行无效可以加上这个配置 我用的sh /xxx/blog.sh restart 启动脚本 不加这个配置启动无效 也没有错误提示 擦擦的 nohup java -jar 启动不加配置暂未测试 自行测试即可
source /etc/profile

jarDir="/var/www/server"
jarName="yourproject.jar"
logFile="/var/www/server/autoRestart.log"

cd ${jarDir}

count=$(ps -ef | grep ${jarName} | grep -v "grep")
if [ -n "${count}" ];then
	echo "`date` ${jarName} is alive" >> ${logFile}
	#echo "`date` ${jarName} is alive"
else
	echo "`date` ${jarName} is dead. restart it" >> ${logFile}
	#echo "`date` ${jarName} is dead. restart it"
	nohup java -jar ${jarName} --server.port=8080 --spring.profiles.active=pro > yourproject.log 2>&1 &
fi

3添加运行权限

chmod +x autoRestart.sh

4新增一个定时任务

crontab -e

添加定时任务,每5分钟(自行调整)运行一次

*/5 * * * * /var/www/server/autoRestart.sh

PS:以上脚本在centos7下运行无误,其它环境请自行修改

示例

#!/bin/bash

source /etc/profile

jarName="blog.jar"
logFile="/home/logs/autoStart/blogAutoRestart.log"

count=$(ps -ef | grep ${jarName} | grep -v "grep")
if [ -n "${count}" ];then
	echo "`date` ${jarName} is alive" >> ${logFile}
else
	echo "`date` ${jarName} is dead. restart it" >> ${logFile}
	`/home/run/newblog/xmblog.sh restart`
	echo "`date` ${jarName} is dead. restart ok" >> ${logFile}
fi

来源:https://www.cnblogs.com/tenny-peng/p/14025359.html