使用shell脚本部署项目
脚本文件start.sh
#!/usr/bin/env bash
#项目名
projectname=mod-jtlsp-data-transport-0.0.1-SNAPSHOT.jar
#项目路径
path=$(pwd)/target/${projectname}
#配置文件
file=test
#进程pid
pid=
#检测pid
function getPid() {
echo "检测状态---------------------------------------------"
pid=$(ps -ef | grep -n ${projectname} | grep -v grep | awk '{print $3}')
if [ ${pid} ]; then
echo "运行pid:${pid}"
else
echo "未运行"
fi
}
function stop() {
getPid
if [ ${pid} ]; then
echo "停止程序---------------------------------------------"
kill -9 ${pid}
getPid
if [ ${pid} ]; then
#stop
echo "停止失败"
else
echo "停止成功"
fi
fi
}
#启动程序
function start() {
#启动前,先停止之前的
stop
if [ ${pid} ]; then
echo "停止程序失败,无法启动"
else
echo "正在打包---------------------------------------------"
mvn clean package -DskipTests
echo "打包结束---------------------------------------------"
echo "启动程序${file}---------------------------------------------"
nohup java -jar -Dspring.profiles.active=${file} ${path} >/dev/null 2>&1 &
#查询是否有启动进程
getPid
if [ ${pid} ];then
echo "启动成功"
#nohup日志
tail -n 50 -f nohup.out
else
echo "启动失败"
fi
fi
}
#重启程序
function restart() {
#启动前,先停止之前的
stop
if [ ${pid} ]; then
echo "停止程序失败,无法启动"
else
echo "启动程序${file}---------------------------------------------"
nohup java -jar -Dspring.profiles.active=${file} ${path} >/dev/null 2>&1 &
#查询是否有启动进程
getPid
if [ ${pid} ];then
echo "启动成功"
#nohup日志
tail -n 50 -f nohup.out
else
echo "启动失败"
fi
fi
}
#启动时带参数,根据参数执行
if [ ${#} -ge 1 ]; then
if [ ${2} ]; then
file=${2}
fi
case ${1} in
"start")
start;;
"restart")
restart;;
"stop")
stop;;
"getPid")
getPid;;
*)
echo "${1}无任何操作";;
esac
else
echo "
command如下命令:
start:启动-会重新打包
stop:停止进程
restart:重启-不会重新打包
getPid:获取当前进程pid
注:第二个参数会可以指定启动项目的配置文件,默认是test"
fi
使用命令
注:第二个参数会可以指定启动项目的配置文件,默认是test
# 启动-会重新打包
bash start.sh start dev
# 停止进程
bash start.sh stop dev
# 重启-不会重新打包
bash start.sh restart dev
# 获取当前进程pid
bash start.sh getPid dev