分享一个linux服务器上重启springboot项目打成的jar包的脚本,重要操作都有注释,脚本代码如下:
#!/bin/bash# 功能:启动/停止/重启/查看指定JAR包的运行状态# ======================== 配置项(根据实际情况修改)========================# Java可执行文件路径JAVA_HOME="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java"# JAR包完整路径JAR_PATH="/Users/long/IdeaProjects/b-demo/target/b-demo.jar"# 日志文件路径(自动生成,可自定义)LOG_FILE="/Users/long/software/code/logs/b-demo.log"# 进程标识(用于区分同名JAR包,建议用JAR包名称)APP_NAME="b-demo"# JVM启动参数(可根据需要调整,如堆内存)JVM_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8"# ==========================================================================# 检查Java路径是否存在check_java() { if [ ! -f "${JAVA_HOME}" ]; then echo "错误:Java路径 ${JAVA_HOME} 不存在,请检查配置!" exit 1 fi}# 检查JAR包路径是否存在check_jar() { if [ ! -f "${JAR_PATH}" ]; then echo "错误:JAR包路径 ${JAR_PATH} 不存在,请检查配置!" exit 1 fi}# 获取进程IDget_pid() { # 通过JAR包名称过滤进程,排除grep自身 PID=$(ps -ef | grep "${APP_NAME}.jar" | grep -v grep | awk '{print $2}')}# 启动服务start() { check_java check_jar get_pid if [ -n "${PID}" ]; then echo "${APP_NAME} 已启动,进程ID:${PID}" else # 后台启动JAR包,输出日志到指定文件,&表示后台运行 nohup ${JAVA_HOME} ${JVM_OPTS} -jar ${JAR_PATH} > ${LOG_FILE} 2>&1 & sleep 2 # 等待进程启动 get_pid if [ -n "${PID}" ]; then echo "${APP_NAME} 启动成功,进程ID:${PID}" else echo "${APP_NAME} 启动失败,请查看日志 ${LOG_FILE}" fi fi}# 停止服务stop() { get_pid if [ -n "${PID}" ]; then echo "正在停止 ${APP_NAME}(进程ID:${PID})..." kill -15 ${PID} # 优雅停止(SIGTERM) sleep 3 # 检查是否还在运行,若在则强制杀死 get_pid if [ -n "${PID}" ]; then echo "优雅停止失败,强制杀死进程 ${PID}..." kill -9 ${PID} sleep 1 get_pid if [ -z "${PID}" ]; then echo "${APP_NAME} 强制停止成功" else echo "${APP_NAME} 停止失败,请手动检查进程" fi else echo "${APP_NAME} 优雅停止成功" fi else echo "${APP_NAME} 未运行" fi}# 查看状态status() { get_pid if [ -n "${PID}" ]; then echo "${APP_NAME} 正在运行,进程ID:${PID}" else echo "${APP_NAME} 已停止" fi}# 重启服务restart() { echo "正在重启 ${APP_NAME}..." stop start}# 帮助信息usage() { echo "使用说明:$0 [start|stop|restart|status]" echo " start - 启动服务(后台运行)" echo " stop - 停止服务" echo " restart - 重启服务" echo " status - 查看服务状态" exit 1}# 主逻辑if [ $# -ne 1 ]; then usageficase "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) usage ;;esacexit 0
执行用重启命令就行
1.如果jar包没有启动,打印信息如下

2.如果jar包正在运行,先优雅停止,再启动,则打印信息如下
如果觉得文章内容不错,免费点个赞、推荐、分享一下,如果想第一时间收到推送,可以星标⭐下。更多精选干货,可以点击下方卡片进行查阅!