背景
日常开发工作中,部署项目时,常常需要写一个脚本来实现项目重启(比如:jar/war)。随着时间的推移,一个项目会存在多个版本。因此需要传入一个版本参数来启动对应版本的项目。
脚本实现
if [ -n "$1" ]; then
pid=`ps -ef | grep -w test-0.0.1 | grep -v grep | awk '{print $2}'`
echo "test $pid"
if [ -n "$pid" ]
then
echo "kill -9 pid:" $pid
kill -9 $pid
fi
nohup java -Xmx1024m -Xms1024m -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:ParallelGCThreads=8 -XX:MaxTenuringThreshold=10 -XX:GCTimeRatio=19 -XX:+DisableExplicitGC -jar $1/test-0.0.1.jar --spring.profiles.active=online >/dev/null 2>&1 &
echo "test start success"
fi
脚本解释
运行脚本时需要输入参数 没有参数则不执行
if [ -n "$1" ];then
启动项目之前,若正在执行,根据项目名称(test-0.0.1此名称为jar名,每个版本打包时名字要相同)先查询出对应的进程id,若存在则干掉进程。
pid=`ps -ef | grep -w test-0.0.1 | grep -v grep | awk '{print $2}'`
echo "test $pid"
if [ -n "$pid" ]
then
echo "kill -9 pid:" $pid
kill -9 $pid
fi
启动项目,此处用到了传入的版本参数($1/test-0.0.1.jar)去获取对应的jar,启动并指定相关JVM参数。
nohup java -Xmx1024m -Xms1024m -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:ParallelGCThreads=8 -XX:MaxTenuringThreshold=10 -XX:GCTimeRatio=19 -XX:+DisableExplicitGC -jar $1/test-0.0.1.jar --spring.profiles.active=online >/dev/null 2>&1 &
项目目录及运行脚本
一个日期代表一个版本,脚本与其同一级。版本文件夹中存放项目。
执行脚本时,若需要在脚本中指定环境变量需要用source命令。执行之前赋权限
chmod +x run-server.sh
source run-server.sh 20200707