java项目启动脚本

在Linux系统上发布Java项目通常涉及以下步骤:

  1. 打包项目:首先,需要将Java项目打包成可执行的 JAR 文件。你可以使用构建工具如 Maven 或 Gradle 来构建项目并生成 JAR 文件。
  2. 上传JAR文件:将打包好的 JAR 包上传到服务器的目标位置。
  3. 编写启动脚本:编写启动脚本,可以是 Shell 脚本或者 systemd service 单元文件,用于启动和管理 Java 应用。
  4. 设置环境变量:确保服务器上已经安装了 Java 运行环境,并设置好 JAVA_HOME 等必要的环境变量。
  5. 启动应用:运行启动脚本来启动 Java 应用程序。

下面是一个简单的例子,展示如何通过 Shell 脚本发布和启动一个Java项目:

#!/bin/bash

# 设置Java应用目录
APP_HOME=/path/to/your/application
PROJECT_JAR_NAME=your-application.jar

# 检查正在运行的Java进程并停止
PID=`ps -ef | grep java | grep "$PROJECT_JAR_NAME" | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
    kill $PID
fi

# 备份旧日志文件
mv $APP_HOME/logs/nohup.log $APP_HOME/logs/nohup_$(date +"%Y%m%d%H%M%S").log

# 启动Java应用
nohup java -jar $APP_HOME/$PROJECT_JAR_NAME > $APP_HOME/logs/nohup.log 2>&1 &

根据项目的需要优化以下脚本

# 项目名称
PROJECT_JAR_NAME="skyline-iot*.*jar"
# 应用根目录
APP_HOME=/usr/local/application/skyline-iot

# 查找JAR包并保存到LIB_JARS变量中
LIB_JARS=`find $APP_HOME/$PROJECT_JAR_NAME |awk 1`

# 加载系统环境变量配置文件
source /etc/profile

# Java可执行路径
JAVA=/usr/bin/java

# 查找正在运行的Java进程的PID
PID=`ps -ef | grep java | grep "$PROJECT_JAR_NAME" | grep -v grep |awk '{print $2}'`

# 如果存在正在运行的进程,则尝试停止它
if [ -n "$PID" ]; then
    echo -e "Stopping the $PROJECT_JAR_NAME pid: $PID ...\c"
    kill $PID > /dev/null 2>&1

    # 等待进程停止
    COUNT=0
    while [ $COUNT -lt 1 ]; do
        echo -e ".\c"
        sleep 1
        COUNT=1
        PID_EXIST=`ps -f -p $PID | grep java`
        if [ -n "$PID_EXIST" ]; then
            COUNT=0
        fi
    done
    echo -e "Stopped success \n"
fi

# 如果日志目录不存在,则创建
if [ ! -d $APP_HOME/logs ]; then
  mkdir logs
fi

# Java运行参数配置
JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
JAVA_DEBUG_OPTS=""
if [ "$1" = "debug" ]; then
    JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
fi
JAVA_JMX_OPTS=""
if [ "$1" = "jmx" ]; then
    JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
fi

# 如果未配置JAVA_MEM_OPTS,则设置默认值
if [ -z $JAVA_MEM_OPTS ]; then
    JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -Xss512k -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=4 "
fi

# Java Dump配置
JAVA_DUMP_OPTS="-XX:ErrorFile=$APP_HOME/logs/hs_err_%%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$APP_HOME/logs"

# 输出Java及启动信息
echo -e $JAVA
echo -e "Starting the $LIB_JARS ...\c"

# 启动Java应用并重定向输出至日志文件
$JAVA $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS $JAVA_DUMP_OPTS -jar $LIB_JARS > $APP_HOME/logs/nohup-$(date +%Y-%m-%d).log 2>&1 &

# 等待1秒
sleep 1

# 检查新启动的Java进程是否存在
PIDS=`ps -ef | grep java | grep -v grep | grep "$PROJECT_JAR_NAME" | awk '{print $2}'`
if [ -n "$PIDS" ]; then
    echo "start success!pid: $PIDS"
else
    echo "fail to start"
fi

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值