Erlo

linux 环境启动jar服务, 启动脚本详细解释

2023-03-01 10:30:02 发布   136 浏览  
页面报错/反馈
收藏 点赞

掰碎了讲一个jar包启动文件.

  • 当前服务目录如下
# ls /easy/test/info/ -> bin  mytest.jar
#  ls /easy/test/info/bin/ -> spring-boot.sh

spring-boot.sh 文件内容如下

#!/bin/bash
# 环境索引: 标识解释器为bash ./当前文件 等同于 sh 当前文件
# 本次解析执行命令= ./easy/test/info/bin/spring-boot.sh  start
JAVA_OPTIONS_INITIAL=-Xms500M
JAVA_OPTIONS_MAX=-Xmx1000M
# 定义变量: 注意=左右不要有空格
BINPATH=$(cd `dirname $0`; pwd)
# 获取脚本所在的项目名称
# $0  获取当前脚本本身的名字,其他包执行则包含到当前文件的路径
# dirname 命令去除文件名中的非目录部分,仅显示与目录有关的内容
# $()和反引号``的作用结果相同都是用来作命令替换的,通俗来讲就是把命令执行后的结果作为参数返回
# pwd 命令用于显示工作目录的绝对路径名称
# 先执行 dirname $0 获取当前目录名称,
# 再执行cd 切换到当前目录,
# ; 分号; 用分号隔开两个命令
# 再执行pwd, 用BINPATH 接受pwd返回结果.
# $0 ==>            ./easy/test/info/bin/spring-boot.sh
# `dirname $0` ==>  ./easy/test/info/bin/ 
# BINPATH==>        /easy/test/info/bin

if [ $(ls ${BINPATH%/bin*}|grep .*.jar|wc -l) -gt 1 ] ;then
# 字符串截取:  ${parameter%word} # 删除匹配后缀
#   ${BINPATH%/bin*} 获取BINPATH 删除/bin 后面部分
# grep 匹配
# wc 计数
# -gt 大于
# if 流程判断
# 获取脚本上级的.jar 结尾文件是否>1个.
	echo "目录中含有多个jar文件"
	exit 0
fi
_JAR_KEYWORDS=$(ls ${BINPATH%/bin*}|grep .*.jar)
# 获取当前jar包名称(mytest.jar)

if [ "$_JAR_KEYWORDS" =  "" ] ;then
	echo "${BINPATH%/bin*}下未找到jar包!!"
	exit 0
fi
APP_NAME=${_JAR_KEYWORDS%.jar*}
# 字符串截取:  ${parameter%word} # 删除匹配后缀
#   ${_JAR_KEYWORDS%.jar*} 去掉jar包的.jar后缀, 赋值给appName字段(mytest)
if [ $1 == "start" ] ;then
	echo "当前启动的项目为:$APP_NAME,项目所在目录:${BINPATH%/bin*}"
fi
# 查询进程,去掉grep查询, 取第二位(pid)
PID=$(ps aux | grep ${_JAR_KEYWORDS} | grep -v grep | awk '{print $2}' )
# ps    进程查看
# | grep -v grep 排除grep 进程,即当前的ps查询进程
# awk 行处理器, awk '{print $2}' 输出第2行数据, 即pid行.
function check_if_process_is_running {
    if [ "$PID" = "" ]; then
        return 1
    fi
    ps -p $PID | grep "java"
    # ps 进程查看, 根据pid查看进程
    return $?
    # $? 上一指令的返回值,成功是0,不成功是1。
}

case "$1" in
status)
# case 选择命令
# $1 执行该文件的第一个参数.
if check_if_process_is_running
then
echo -e "
登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认