使用shell脚本监控并自动重启已挂掉的java服务

561 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

步骤记录

1. 准备可运行的jar包

在这里插入图片描述

使用命令运行该jar包,java -jar eureka-server.jar --server.port=8769,确保jar是正常的

在这里插入图片描述

2. 编辑sh脚本

#!/bin/sh

# 进行jar所在目录
cd /opt/v2
 
# 查询程序占用
project=`ps -ef|grep eureka-server|grep -v grep|wc -l`
date=`date`
server_name="eureka-server"

# $? -ne 0 不存在 
# $? -eq 0存在 
if [ $project -eq 0 ]
then
nohup java -jar eureka-server.jar --server.port=8769 & > nohup.out 2>&1
echo `date +%Y-%m-%d` `date +%H:%M:%S` $server_name >> /opt/eureka-server/restart.log
fi

3. 验证sh脚本是否可执行

很多人都是直接拷贝网上代码直接就去操作下一步,直接运行sh文件都不起作用,后面的操作根本就徒劳。

在这里插入图片描述

我是在windows上编辑的sh脚本,传到Liunx上并不能直接运行,首先需要转码,在保存之前,先执行set ff=unix完成转码后再保存。

在这里插入图片描述 需要赋予该sh文件可执行权限

chmod a+x restart.sh

再次确认sh文件是否能正常运行 在这里插入图片描述

4. 添加到系统定时任务

编辑系统定时任务文件

crontab -e

使用cron表达式,设置1分钟运行一次

*/1 * * * * bash /opt/eureka-server/restart.sh >> /opt/eureka-server/log.log

查看定时任务日志,可以看到每隔1分钟执行了一次

tail -f /var/log/cron

5. 验证是否能重启项目

kill掉当前java项目的进程,等待定时任务执行

在这里插入图片描述

再次查看项目是否启动

在这里插入图片描述

自动重启已经挂掉的java项目操作流程就此完成