start.sh命令文件优雅地启动jar包

1.场景

1.Linux生产环境下,后台启动jar包;
2.将日志输出到当前目录logs文件夹下,并以端口号命名。

一般微服务应用启动脚本格式:

nohup java 内存参数 -jar 应用jar包 日志配置或其他配置 2>&1 &

核心语句:

nohup java -jar -XX:MetaspaceSize=6144m -XX:MaxMetaspaceSize=12288m  ${APP_NAME} --server.port=8001 >> logs.log 2>&1 &

start.sh

#!/bin/sh

user=`whoami`
NEEDED_USER=root

APP_NAME=demo-0.0.1-SNAPSHOT.jar

if [ ! -f "${APP_NAME}" ]; then
     echo "${APP_NAME} not found!"
     exit 1
fi

if [ "${user}" == "${NEEDED_USER}" ]; then
     nohup java -jar -XX:MetaspaceSize=6144m -XX:MaxMetaspaceSize=12288m  ${APP_NAME} --server.port=8001 > logs.log 2>&1 &
else
     echo "USER ${NEEDED_USER} please!"
fi

常用内存参数:

  • -Xms128M:最小堆内存大小;
  • -Xmx512M:最大堆内存大小;
  • -XX:MetaspaceSize:初始元空间大小
  • -XX:MaxMetaspaceSize:最大元空间大小

Java8以后,永久代被元空间取代,同时元空间不像永久代一样受制于堆内存,元空间是基于操作系统内存的,理论上讲,可以一直扩展内存直到操作系统的极限,所以设置元空间大小时,建议加上-XX:MaxMetaspaceSize参数,给个范围限制,和-XX:MetaspaceSize参数值一样,一般设置成256M即可,避免元空间占用的内存一直增长。

补充:

  1. nohup 不挂断地运行命令;
  2. 2>&1,文件输出重定向,把正确输出和错误输出都保存到同一个文件当中;
  3. 使用 & 在程序结尾来让程序在后台运行,即使terminal(终端)关闭,或者电脑死机程序依然运行。

参考:
1.-XX:MetaspaceSize和-XX:MaxMetaspaceSize配合使用,https://blog.csdn.net/weixin_38106322/article/details/109004181

你可能感兴趣的:(Linux杂谈,Java,linux,java)