0
点赞
收藏
分享

微信扫一扫

linux运行jar并加载外部yml文件配置的sell脚本

SPEIKE 2022-01-16 阅读 42
linux

如一台服务器上部署两个相同的服务就不行了,因为是按项目名称杀的进程


#!/bin/sh
base_home=/usr/local/app/test
jar_name=demo-proj-0.0.1-SNAPSHOT
errorlogs_dir=$base_home/logs
gclog_file=$base_home/logs/gc.log
dump_dir=$base_home/logs/heapdump

#运行脚本提示信息
tips(){
	echo "-------------------------------------"
	echo ""
	echo "项目地址: $base_home/$jar_name.jar"
	echo ""
	echo "你可以使用如下参数进行操作"
	echo "-status -查看当前项目运行状态"
	echo "-start  -启动当前项目"
	echo "-stop  -停止当前项目"
	echo "-restart -重启当前项目"
	echo ""
	echo "-------------------------------------"
}

#查看状态
status(){
	#查询端口的PID {print $7}-取出打印的第七个值
	pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
	#判断端口是否被占用
	if test -z "$pid" ;then
		echo "没有项目在运行"
	else
		echo "项目正在运行中"
	fi
}

#启动项目
start(){
	pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
	if test -z "$pid" ;then
		echo "正在启动......"
		java -Xmx100m -Xms100m -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:GCLogFileSize=128M -XX:NumberOfGCLogFiles=1 -Xloggc:$gclog_file -XX:HeapDumpPath=$dump_dir -jar $base_home/${jar_name}.jar --spring.config.location=$base_home/config/application.yml >> $base_home/logs/${jar_name}_$(date +'%Y%m%d').log &
		echo "启动完成....."
	else
		echo "项目运行中或端口已被占用"
	fi

}

#停止项目
stop(){
	pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
	if test -z "$pid" ;then
		echo "没有项目在运行,请先启动"
	else
		kill -9 $pid
		echo "已杀死应用$jar_name"
	fi
}

#重启项目
restart(){
	pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
	echo "正在杀死pid $pid 中..."
	if test -z "$pid" ;then
		echo "项目未启动"
	else
		kill -9 $pid
	fi
	sleep 5 #睡眠五秒
	start  #调用启动方法
	echo "项目重启成功!"
}

#参数选项
case "$1" in
"-status")
	status
;;
"-start")
	start
;;
"-stop")
	stop
;;
"-restart")
	restart
;;
*)
	tips
;;
esac

执行

#   ./all.sh -start

如果有BUG

:

-bash: ./all.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

请查看

/bin/bash^M: 坏的解释器: 没有那个文件或目录_qq690452074的专栏-CSDN博客

举报

相关推荐

0 条评论