1.在Linux中运行jar包,一般采用命令是 java -jar的形式。停止项目 还得找到项目的pid 然后kill -9 pid 去执行,本文章主要编写启动服务中的常用命令用启动文件来执行。
哈哈,来吧,我们来编写启动文件,先创建一个boot.sh文件,以下为文件内容:
# spring boot jar 快速脚本
#strart 启动
#stop 停止
#restart 重启
#status 状态
#log 打印控制台日志
set -e
APPLICATION_JAR="@build.finalName@.jar"
#bin目录绝对路径
BIN_PATH=$(cd `dirname $0`; pwd)
#进入bin目录
cd $(dirname "$0") || exit
#返回到上一级项目根目录
cd ..
#打印项目根目录绝对路径
# ·pwd· 执行系统命令并获取结果
BASE_PATH=$(pwd)
#获取服务pid
application_pid() {
echo $(ps aux | grep $APPLICATION_JAR | grep -v grep | awk '{ print $2 }')
}
#服务启动指令
start() {
pid=${application_pid}
if [ -n "$pid"]
then
echo "$APPLICATION_JAR is already running (pid: $pid)"
else
#外部配置文件绝对目录,如果是目录需要/结尾,也可以直接指定文件
#如果指定的是目录,spring则会读取目录中的所有配置文件
CONFIG_DIR=${BASE_PATH}"/config/"
#项目日志输出绝对路径 console.log是我log4j生成的日志文件名
LOG_DIR=${BASE_PATH}"/logs"
CONSOLE_LOG="${LOG_DIR}/console.log"
#如果logs文件夹不存在,则创建文件夹
if [[ ! -d "${LOG_DIR}" ]]; then
mkdir "${LOG_DIR}"
fi
#当前时间
NOW_PRETTY=$(date +'%Y-%m-%d %H:%M:%S')
#启动日志
STARTUP_LOG="============= ${NOW_PRETTY} ============="
JAVA_OPT="-server -Xms1g -Xms1g -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m"
JAVA_OPT="{JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
#输出项目根目录
STARTUP_LOG="${STARTUP_LOG}application root path: ${BASE_PATH}\n"
#输出jar包名称
STARTUP_LOG="${STARTUP_LOG}application jar name: ${APPLICATION_JAR}\n"
#输出bin路径
STARTUP_LOG="${STARTUP_LOG}application bin path: ${BIN_PATH}\n"
#输出项目config路径
STARTUP_LOG="${STARTUP_LOG}application config path: ${CONFIG_DIR}\n"
#打印日志路径
STARTUP_LOG="${STARTUP_LOG}application log path: ${CONSOLE_LOG}\n"
#打印JVM配置
STARTUP_LOG="${STARTUP_LOG}application JAVA_OPT : ${JAVA_OPT}\n"
#打印启动命令
STARTUP_LOG="${STARTUP_LOG}application startup command: nohup java ${JAVA_OPT} -jar ${BASE_PATH}/boot/${APPLICATION_JAR} --spring.config.location=${CONFIG_DIR} >/dev/null 2>&1 &\n"
#打印启动日志
echo -e "$STARTUP_LOG" >> "${CONSOLE_LOG}"
#执行启动命令:后台启动项目,并将日志输出到项目根目录下的logs文件夹下
nohup java ${JAVA_OPT} -jar ${BASE_PATH}/boot/${APPLICATION_JAR} --srspring.config.location=${CONFIG_DIR} >/dev/null 2>&1 &
#前台打印日志
tail -f "${CONSOLE_LOG}"
fi
return 0
}
#停止服务命令
stop() {
pid=${application_pid}
if [ -n "$pid"]
then
echo "Stopping $APPLICATION_JAR"
kill -9 $pid
else
echo "APPLICATION_JAR" is not running"
fi
return 0
}
#重新启动命令
restart() {
stop
sleep 2
start
}
#打印日志命令
log() {
tail -f -n 100 $BASE_PATH/logs/console.log
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
log)
log;;
*)
echo -e "\033[0;31m Usage: \033[0m \033[0;34m sh $0 [start|stop|restart|log] \033[0m
\033[0;31m Example: \033[0m
\o33[0;33m sh $0 status \033[0m"
esac
总结:以上就是启动文件boot.sh的全部内容了,配置好后,在linux环境中部署好服务后,只需到服务的bin目录下找到boot.sh文件, 执行./boot.sh restart 就是重新启动服务,执行./boot.sh log 就是查看最近100行日志。