211 lines
5.0 KiB
Bash
211 lines
5.0 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
#可变参数变量
|
||
languageType="java" #支持 java,javac,netcore 发布
|
||
|
||
#参数值由pom文件传递
|
||
packageName= #命令启动包名 xx.jar的xx
|
||
|
||
#固定变量
|
||
#basePath=$(cd `dirname $0`/;cd ../;pwd)
|
||
baseDirPath="${basePath}" #解压部署磁盘路径
|
||
pid= #进程pid
|
||
|
||
#所有模块列表
|
||
modules=("beidou", "beidou-rtcm")
|
||
|
||
#模块变量
|
||
moduleName="${2}" #模块名
|
||
modulePath= #模块路径
|
||
packageModulePath= #打包模块路径
|
||
biz="sec-"
|
||
|
||
#配置文件路径
|
||
configPath="/root/beidou/config"
|
||
|
||
if [ "${moduleName}" == "beidou" ]
|
||
then
|
||
packageName="${biz}-${moduleName}"
|
||
modulePath="${baseDirPath}/${biz}-${moduleName}" #网关模块路径
|
||
packageModulePath="${biz}-${moduleName}"
|
||
elif [ "${moduleName}" == "beidou-rtcm" ]
|
||
then
|
||
packageName="${biz}-${moduleName}"
|
||
modulePath="${baseDirPath}/${biz}-${moduleName}" #网关模块路径
|
||
packageModulePath="${biz}-${moduleName}"
|
||
else
|
||
packageName="${biz}-${moduleName}"
|
||
modulePath="${baseDirPath}/${biz}-${moduleName}" #网关模块路径
|
||
packageModulePath="${biz}-${moduleName}"
|
||
fi
|
||
|
||
#检测pid
|
||
function getPid()
|
||
{
|
||
echo "检测状态---------------------------------------------"
|
||
pid=`ps -ef | grep -n ${packageName}.jar | grep -v grep | awk '{print $2}'`
|
||
if [ ${pid} ]
|
||
then
|
||
echo "运行pid:${pid}"
|
||
else
|
||
echo "未运行"
|
||
fi
|
||
}
|
||
|
||
#启动程序
|
||
function start()
|
||
{
|
||
#查询是否有启动进程
|
||
getPid
|
||
if [ ${pid} ]
|
||
then
|
||
echo "程序已启动"
|
||
else
|
||
echo "启动程序---------------------------------------------"
|
||
#进入模块运行目录
|
||
cd ${modulePath}/target/
|
||
|
||
nohup java -Dfile.encoding=utf-8 -Xms128m -Xmx256m -jar ${packageName}.jar --spring.config.location=${configPath}/application-${moduleName}.properties --logging.config=${configPath}/logback-${moduleName}.xml >/dev/null 2>&1 &
|
||
|
||
#查询是否有启动进程
|
||
getPid
|
||
if [ ${pid} ]
|
||
then
|
||
echo "已启动"
|
||
else
|
||
echo "启动失败"
|
||
fi
|
||
fi
|
||
}
|
||
|
||
#停止程序
|
||
function stop()
|
||
{
|
||
getPid
|
||
if [ ${pid} ]
|
||
then
|
||
echo "停止程序---------------------------------------------"
|
||
kill -15 ${pid}
|
||
echo -n "停止中"
|
||
|
||
counter=0
|
||
while [ $counter -lt 1 ]
|
||
do
|
||
#getPid
|
||
pid=`ps -ef | grep -n ${packageName}.jar | grep -v grep | awk '{print $2}'`
|
||
if [ ${pid} ]
|
||
then
|
||
#停止失败
|
||
echo -n "..."
|
||
else
|
||
break
|
||
fi
|
||
|
||
sleep 2s
|
||
done
|
||
echo "success"
|
||
fi
|
||
}
|
||
|
||
#检查包名参数
|
||
function checkParam()
|
||
{
|
||
if [ ${moduleName} ]
|
||
then
|
||
echo -n ""
|
||
#echo "packageName:${packageName}"
|
||
else
|
||
echo "模块名参数未输入"
|
||
echo "所有模块列表:"
|
||
for modules in ${modules[@]}
|
||
do
|
||
echo -n $modules
|
||
done
|
||
echo " "
|
||
exit
|
||
fi
|
||
}
|
||
|
||
#启动时带参数,根据参数执行
|
||
if [ ${#} -ge 1 ]
|
||
then
|
||
case ${1} in
|
||
"start")
|
||
checkParam
|
||
start
|
||
;;
|
||
"stop")
|
||
checkParam
|
||
stop
|
||
;;
|
||
"restart")
|
||
checkParam
|
||
stop
|
||
start
|
||
;;
|
||
"status")
|
||
checkParam
|
||
ps -ef | grep -n ${packageName}.jar | grep -v grep
|
||
;;
|
||
"log")
|
||
checkParam
|
||
tail -n 50 -f ${configPath}/logs/${moduleName}.log
|
||
;;
|
||
"info")
|
||
ps aux | grep java | grep -E 'runjian|rundo|admin' | grep -v grep
|
||
;;
|
||
"killall")
|
||
echo "杀掉所有模块进程"
|
||
ps -ef | grep sec | grep -v grep | awk '{print $2}' | xargs kill -15
|
||
;;
|
||
"info")
|
||
ps aux | grep java | grep -E 'sec' | grep -v grep
|
||
;;
|
||
"package")
|
||
checkParam
|
||
cd ${baseDirPath}
|
||
echo "打包单个模块"
|
||
mvn clean package -pl ${packageModulePath} -am -D"maven.test.skip=true"
|
||
;;
|
||
"packageAll")
|
||
echo "打包所有模块"
|
||
cd ${baseDirPath}
|
||
mvn clean package -D"maven.test.skip=true"
|
||
;;
|
||
"update")
|
||
checkParam
|
||
echo "更新代码并重新部署"
|
||
cd ${baseDirPath}
|
||
git pull
|
||
mvn clean package -pl ${packageModulePath} -am -D"maven.test.skip=true"
|
||
stop
|
||
start
|
||
;;
|
||
*)
|
||
echo "${1}无任何操作"
|
||
;;
|
||
esac
|
||
else
|
||
echo "
|
||
command如下命令:
|
||
start:启动
|
||
stop:停止进程
|
||
restart:重启
|
||
status:查看模块状态
|
||
log:查看模块日志
|
||
info:查看所有模块进程
|
||
killall:杀掉所有模块进程
|
||
package:打包单个模块
|
||
packageAll:打包所有模块
|
||
update: 更新代码并部署
|
||
|
||
示例命令如:./services.sh start beidou
|
||
所有模块列表:"
|
||
echo -n " "
|
||
for modules in ${modules[@]}
|
||
do
|
||
echo -n $modules
|
||
done
|
||
echo " "
|
||
fi
|