java jar包启动脚本示例

#!/bin/bash
 
#Publish over SSH远程执行shell时需加上这句 
source /etc/profile
 
#jdk所在路徿JAVA_HOME='/usr/local/java/jdk17'
 
#项目名称
APP_NAME=test-1.0.0.jar
 
#项目所在路徿APP_HOME=/home/messageNex/fm-console/$APP_NAME
 
#jvm启动参数
JAVA_OPTS='-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heap -Xms256m -Xmx1024m'
SERVER_OPTS=' --spring.cloud.nacos.config.namespace=dev --spring.cloud.nacos.config.group=samps --spring.cloud.nacos.config.server-addr=127.0.0.1:8848 --spring.cloud.nacos.config.password=ANacos --server.address=172.168.55.81'
 
#初始化psid变量
psid=0
 
##################################
#打印系统环境参数
##################################
info() {
    echo "System information:"
    echo "***********************"
    echo `head -n 1 /etc/issue`
    echo `uname -a`
    echo "JAVA_HOME = $JAVA_HOME"
    echo `java -version`
    echo
    echo "***********************"
}
 
##################################
#判断程序是否启动,并返回进程id
##################################
checkpid() {
    javaps=`ps -ef | grep $APP_NAME | grep -v auto | grep -v kill | grep -v grep | awk '{print $2}'`
    if [ -n "$javaps" ] ;then
        psid=`echo $javaps`
    else
        psid=0
    fi
}
 
##################################
#启动程序
##################################
start() {
    checkpid
    if [ "$psid" -ne 0 ]; then
        echo "warn: app already started!(psid = $psid)"
    else
   	   info
        echo -n "***********starting************"
        JAVA_CMD=`nohup $JAVA_HOME/bin/java -jar $JAVA_OPTS $APP_HOME $SERVER_OPTS >/dev/null 2>&1 &`
        echo "start success"
    fi
}
 
 
##################################
#停止程序
##################################
stop() {
    checkpid
    if [ "$psid" -ne 0 ] ;then
        echo -n "Stopping app(pid = $psid)"
        kill -9 $psid
        if [ $? -eq 0 ] ;then
            echo "stop success"
        else
            echo "stop fail"
 
        fi
    else
        echo "***********************"
        echo "warn app is not running"
        echo "***********************"
	fi
}
 
##################################
#查看状怿##################################
status() {
    checkpid
    if [ $psid -ne 0 ] ;then
        echo "app is running(pid=$psid)"
    else
        echo "app is not running"
    fi
}
 
case "$1" in 
    'info')
        info
    ;;
    'start')
        start
    ;;
    'stop')
        stop
    ;;
    'status')
        status
    ;;
esac

### 如何为Java JAR文件创建Windows启动脚本 为了在Windows系统下为Java JAR文件创建一个启动脚本,可以使用批处理(Batch)脚本来实现这一功能。下面提供了一个完整的示例以及详细的说明。 #### 批处理脚本示例 以下是一个用于启动指定Java JAR文件的批处理脚本: ```batch @echo off :: 设置工作目录为脚本所在的目录 set WORK_DIR=%~dp0 cd /d %WORK_DIR% :: 定义JAR文件名和日志文件路径 set JAR_FILE=your_application.jar set LOG_FILE=app.log :: 清除之前的日志文件(可选) if exist "%LOG_FILE%" del /q "%LOG_FILE%" :: 启动Java应用程序并将输出重定向到日志文件 echo Starting the Java application... java -jar "%JAR_FILE%" > "%LOG_FILE%" 2>&1 :: 检查Java命令执行状态 if errorlevel 1 ( echo Failed to start the Java application. Check logs in %LOG_FILE% ) else ( echo The Java application has been started successfully. ) pause ``` 此脚本的功能如下: - 将当前工作目录设置为脚本所在的目录[^3]。 - 使用`java -jar`命令来运行指定的JAR文件,并将标准输出和错误输出记录到日志文件中[^4]。 - 如果启动失败,则提示用户查看日志文件中的详细信息[^5]。 #### 自定义选项 如果需要自定义JVM参数(例如内存分配或启用特定配置),可以通过修改`java`命令的方式完成。以下是带有额外JVM参数的版本: ```batch @echo off :: 设置工作目录为脚本所在的目录 set WORK_DIR=%~dp0 cd /d %WORK_DIR% :: 定义JAR文件名、日志文件路径和JVM参数 set JAR_FILE=your_application.jar set LOG_FILE=app.log set JVM_OPTS=-Xmx1024m -Xms512m -Dfile.encoding=UTF-8 :: 清除之前的日志文件(可选) if exist "%LOG_FILE%" del /q "%LOG_FILE%" :: 启动Java应用程序并将输出重定向到日志文件 echo Starting the Java application with custom JVM options... java %JVM_OPTS% -jar "%JAR_FILE%" > "%LOG_FILE%" 2>&1 :: 检查Java命令执行状态 if errorlevel 1 ( echo Failed to start the Java application. Check logs in %LOG_FILE% ) else ( echo The Java application has been started successfully. ) pause ``` 在此版本中,通过变量`JVM_OPTS`设置了最大堆大小(`-Xmx1024m`)、最小堆大小(`-Xms512m`)以及其他可能需要的属性(如字符编码)。这些参数可以根据实际需求调整[^6]。 --- ### 注意事项 1. **确保环境变量已正确配置** 脚本依赖于系统的`PATH`环境变量中存在有效的`java`命令。如果没有安装Java或者未将其添加到`PATH`中,需手动指定完整路径,例如:`C:\Program Files\Java\jdk-version\bin\java.exe`[^7]。 2. **权限问题** 在某些情况下,尤其是涉及写入日志文件的操作时,可能需要管理员权限才能成功运行该脚本。建议以管理员身份运行CMD窗口再测试脚本[^8]。 3. **兼容性考虑** 上述脚本适用于大多数基于Spring Boot或其他框架构建的标准JAR。对于特殊类型的项目(比如嵌套WAR结构的应用程序),可能还需要进一步定制化处理逻辑[^9]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值