#!/bin/bash# Java项目的jar包名称。APP_NAME="myapp.jar"# Java项目的路径。APP_PATH="/path/to/myapp/"# Java虚拟机的启动参数,比如初始堆大小和最大堆大小JAVA_OPTS="-Xms512m -Xmx1024m"# 切换到Java项目所在的目录cd $APP_PATH# 启动Java项目,使用nohup命令让Java项目在后台运行。其中> /dev/null 2>&1是将标准输出和标准错误输出都重定向到/dev/null,这样就不会在控制台输出任何信息了nohup java $JAVA_OPTS -jar $APP_NAME > /dev/null 2>&1 &
使用./start.sh执行脚本
provider.sh
#!/bin/bashcd `dirname $0`BIN_DIR=`pwd`cd ..# DEPLOY_DIR 表示应用程序所在的目录DEPLOY_DIR=`pwd`# 程序的配置文件路径CONF_DIR=$DEPLOY_DIR/conf# MAIN_CLASS 表示应用程序的入口类MAINCLASS=com.StartWebAppliactionPARAMTER=$2PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'`# 应用程序的日志目录LOGS_DIR=$DEPLOY_DIR/logsif [ ! -d $LOGS_DIR ]; then mkdir $LOGS_DIRfiSTDOUT_FILE=$LOGS_DIR/project.log# 应用程序所依赖的第三方库的路径LIB_DIR=$DEPLOY_DIR/libLIB_JARS=$DEPLOY_DIR/lib/*# Java 虚拟机的启动参数JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "# JAVA_DEBUG_OPTS 表示开启 Java 远程调试的参数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 表示开启 Java JMX 监控的参数,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 表示 Java 虚拟机的内存参数JAVA_MEM_OPTS=""BITS=`java -version 2>&1 | grep -i 64-bit`if [ -n "$BITS" ]; then JAVA_MEM_OPTS=" -server -Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "else JAVA_MEM_OPTS=" -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:SurvivorRatio=2 -XX:+UseParallelGC "fiecho -e "Starting the application ...c"# 后台启动java项目:使用之前定义的变量设置 Java 虚拟机的参数和类路径,指定应用程序的入口类,并指定应用程序的配置文件路径nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS $MAINCLASS $PARAMTER> /dev/null 2>&1 输出启动成功的信息和应用程序的进程 IDecho "OK!"PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`echo "PID: $PIDS"echo "STDOUT: $STDOUT_FILE"
start.sh
#!/bin/bashcd `dirname $0`./provider.sh "debug" "--spring.profiles.active=provider-local"
java启动脚本相关参数注释
java项目启动管理脚本参考