spring项目启动sheel脚本
1,后台启动java项目脚本:start.sh
nohup java -jar demo.jar --spring.profiles.active=prod --server.port=$1 --node_mark=app$1 >/dev/null 2>&1 &
启动命令: sh start.sh 8080
2,进阶版本 run.sh,jar包放在子目录./jar下
#!/bin/sh# 定义常量
JAR_NAME="demo.jar"
JAR_PATH=./jar/$JAR_NAME# 查找进程ID的函数
find_pid() {ps -ef | grep "$JAR_NAME" | grep "$1" | grep -v grep | awk '{print$2}'
}# 使用说明,用来提示输入参数
usage() {echo "Usage: sh run.sh [start|stop|restart] port (version)"exit 1
}# 启动方法
start() {if [ -z "$2" ]; thenecho "Error: Version number is required."return 1fi# 查找进程IDPID=$(find_pid "$1")if [ -n "$PID" ]; thenecho "Service is already running on port $1,nothing to do."elsenohup java -jar $JAR_PATH.$2 --spring.profiles.active=prod --server.port=$1 --node_mark=app$1 >/dev/null 2>&1 &echo "Service:$! started on port $1"fi
}# 停止方法
stop() {# 查找进程IDPID=$(find_pid "$1")if [ -z "$PID" ]; thenecho "No service running on port $1"elsekill -15 $PIDecho "Service stopping on port $1..."# 等待进程退出while kill -0 $PID 2>/dev/null; doecho "Waiting for process to terminate..."sleep 1doneecho "Service stopped on port $1"fi
}# 重启方法
restart() {# 先停止stop $1# 再启动start $1 $2
}# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in"start")start $2 $3;;"stop")stop $2;;"restart")restart $2 $3;;*)usage;;
esac
启动命令:sh run.sh 8080
停止命令:sh run.sh stop
重启命令:sh run.sh restart 8080