在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