通过shell脚本一键启动jar包(2020-09-22)
-
最近在学习shell语法的同时,又想到之前学过的把java项目部署到linux服务器上的基本方法,随之就联想到能不能把启动jar包的一系列命令放到shell文件里,这样就会方便许多。
-
以下是我尝试的思路:
- 通过运行shell文件时传参(jar路径、端口号);
- 接收到参数后,先校验jar路径是否有效,然后kill对应端口的进程;
- 开始启动jar包(启动jar包前我先获取了同级日志文件路径并指定);
- 打开日志文件,方便shell调用者查看jar包启动情况。
-
shell脚本代码如下:
#!/bin/bash
# my first shell demo
#---截取字符串获取log文件路径(将*.jar转换为*.log)
logPath="null"
function subStr(){
var=$1
logPath="${var%.*}.log"
echo "同级日志文件: $logPath"
}
#---------------------------
#接收参数1 jar包路径
app_path=$1
if [[ -n $app_path ]] && [ -e $app_path ];then
echo "$app_path定位成功"
#接收参数2 端口号
port=$2
echo "端口号:$port"
if [ -z $2 ];then
echo "缺少参数2:端口号"
exit
fi
#获取端口号对应进程ID,并kill该进程
pid=`lsof -i:$2 | awk '{print$2}'`
echo "kill -9 $pid"
kill -9 $pid
echo "开始启动jar包。。。"
#获取同级日志文件位置
subStr $app_path
nohup java -jar $app_path >$logPath &
#打开日志文件
tail -fn 200 $logPath
else
echo "文件$app_path不存在!!!"
fi