Linux 下通用 jar 启动脚本

这是一个使用ZSH脚本管理Spring Boot应用程序的示例。脚本包含了启动、停止和重启服务的功能,通过检查进程、启动新实例、监控启动完成情况以及根据PID停止服务。在启动时,它会设置JVM参数并使用nohup后台运行服务。
摘要由CSDN通过智能技术生成

脚本

#!/bin/zsh
# 使用命令
USAGE="Usage: startup.sh {start|stop|restart}"

# 参数个数
exec_param_count=$#
# 如果不是 stop 命令,那么就是需要启动启动服务,此时参数不能少于3个,如果小于3,则提示使用命令
if [ $1 != "stop" -a $exec_param_count -lt 1 ]; then
    echo $USAGE
    exit
fi

cd $(dirname $0)
WORKSPACE=$(pwd)
# 获取 jar 文件
JAR_NAME=$(ls $WORKSPACE | grep .jar$ | awk '{print "'$LIB_DIR'/"$0}')
FULL_JAR_NAME="$WORKSPACE$JAR_NAME"

# 启动命令
start() {
    # 根据配置文件找出 pid
    echo "WORKSPACE=$WORKSPACE"
    PIDS=$(ps -ef | grep java | grep -v grep | grep "$WORKSPACE" | awk '{print $2}')
    if [ -n "$PIDS" ]; then
        echo "启动失败: 该服务已经在运行中!PID: $PIDS"
        exit 1
    fi

    # 启动,可以根据需求增加或改变调优参数
    echo "准备启动$FULL_JAR_NAME"
    echo "nohup java -Xmx256m -Xms256m -Xms128m -jar $FULL_JAR_NAME -Dspring.config.location=$WORKSPACE/application.yml >/dev/null 2>&1 &"
    nohup java -Xmx256m -Xms256m -Xmn256m -jar "$FULL_JAR_NAME" -Dspring.config.location="$WORKSPACE/application.yml" >/dev/null 2>&1 &

    # 等待启动完成
    COUNT=0
    WAIT_TIME=0
    echo "...................................."
    while [ $COUNT -lt 1 ]; do
        sleep 1
        WAIT_TIME=$(expr $WAIT_TIME + 1)
        COUNT=$(ps -ef | grep java | grep -v grep | grep "$FULL_JAR_NAME" | awk '{print $2}' | wc -l)
        if [ $COUNT -gt 0 ]; then
            break
        fi
        if [ $WAIT_TIME -gt 120 ]; then
            echo "启动超时"
            exit 1
        fi
    done
    echo "...................................."
    PIDS=$(ps -ef | grep java | grep -v grep | grep "$FULL_JAR_NAME" | awk '{print $2}')
    echo "服务启动成功,PID: $PIDS"
}

stop() {
    # 根据配置文件找出 pid
    echo "WORKSPACE=$WORKSPACE"
    PIDS=$(ps -ef | grep java | grep -v grep | grep "$FULL_JAR_NAME" | awk '{print $2}')
    if [ -z "$PIDS" ]; then
        echo "该服务尚未运行!"
        exit
    fi
    kill $PIDS
    echo "服务停止,PID:$PIDS"
}

case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    echo "服务重启中"
    stop
    sleep 1
    start
    ;;
*)
    echo $USAGE
    ;;
esac
exit 0

使用说明

# 目录结构如下,如果目录结构不一样可以更改脚本
$ ls
springboot.jar	application.yml	server.sh
# 启动
$ sh server.sh start 
# 停止
$ sh server.sh stop
# 重启
$ sh server.sh restart
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值