详解spring boot 以jar的方式启动常用shell脚本

网友投稿 492 2023-04-02


详解spring boot 以jar的方式启动常用shell脚本

用spring boot框架做的项目,将第三方包全部打在jar里面,http://通过shell脚本启动和停止服务,常用的shell脚本模板如下:

#!/bin/bash

java_OPTIONS_INITIAL=-Xms128M

JAVA_OPTIONS_MAX=-Xmx512M

_JAR_KEYWORDS=monitor-alarm-task-1.0-SNAPSHOT.jar

APP_NAME=monitor-alarm-task

APPLICATION_FILE=/opt/scpip_monitor/application.properties

PID=$(ps aux | grep ${_JAR_KEYWORDS} | grep -v grep | awk '{print $2}' )

ALARM_CONFIG_FILE=`pwd`/alarmConfig.yaml

function check_if_process_is_running {

if [ "$PID" = "" ]; then

return 1

fi

ps -p $PID | grep "java"

return $?

}

case "$1" in

status)

if check_if_process_is_running

then

echo -e "\033[32m $APP_NAME is running \033[0m"

else

echo -e "\033[32m $APP_NAME not running \033[0m"

fi

;;

stop)

if ! check_if_process_is_running

then

echo -e "\033[32m $APP_NAME already stopped \033[0m"

exit 0

fi

kill -9 $PID

echo -e "\033[32m Waiting for process to stop \033[0m"

NOT_KILLED=1

for i in {1..20}; do

if check_if_process_is_running

then

echo -ne "\033[32m . \033[0m"

sleep 1

else

NOT_KILLED=0

fi

done

echo

if [ $NOT_KILLED = 1 ]

then

echo -e "\033[32m Cannot kill process \033[0m"

exit 1

fi

echo -e "\033[32m $APP_NAME already stoppeniFbTd \033[0m"

;;

start)

if [ "$PID" != "" ] && check_if_process_is_running

then

echo -e "\033[32m $APP_NAME already running \033[0m"

exit 1

fi

nohup java -jar -Dalarm.config.file=$ALARM_CONFIG_FILE $JAVA_OPTIONS_INITIAL $JAVA_OPTIONS_MAX $_JAR_KEYWORDS --spring.config.location=$APPLICATION_FILE > /dev/null 2>&1 &

echo -ne "\033[32m Starting \033[0m"

for i in {1..20}; do

echo -ne "\033[32m.\033[0m"

sleep 1

done

if check_if_process_is_running

then

echo -e "\033[32m $APP_NAME fail \033[0m"

else

echo -e "\033[32m $APP_NAME started \033[0m"

fi

;;

restart)

$0 stop

if [ $? = 1 ]

then

exit 1

fi

$0 start

;;

*)

echo "Usage: $0 {start|stop|restart|status}"

exit 1

esac

exit 0

正真启动的命令:

复制代码 代码如下:

nohup java -jar -Dalarm.config.file=$ALARM_CONFIG_FILE $JAVA_OPTIONS_INITIAL $JAVA_OPTIONS_MAX $_JAR_KEYWORDS --spring.config.location=$APPLICATION_FILE > /dev/null 2>&1 &

其中-Dalarm.config.file 指定了外部配置文件的路径,在service初始化中通过这个路径读取外部配置文件,然后解析成对象,如下:

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Service;

import org.yaml.snakeyaml.Yaml;

import scpip.monitor.task.obj.MetricObj;

@Service

public class AlarmConfigService {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

private Map metricMap;

public AlarmConfigService (){

metricMap = new HashMap();

init();

}

private void init(){

BufferedReader buffer;

try {

InputStream cpResource = new FileInputStream(getAlarmConfigFile());

buffer = new BufferedReader(new InputStreamReader(cpResource,"utf-8"));

Yaml yaml = new Yaml();

//Map>> object = (Map>>) yaml.load(getAlarmConfigFile());

Map>> object = (Map>>) yaml.load(buffer);

logger.info("object==" + object);

parseConfigMap(object);

} catch (Exception e) {

e.printStackTrace();

}

}

public Map getMetricMap() {

return metricMap;

}

//{metricName=当前响应时间, alarmValue=10,20,40, columnName=response_time},

private void parseConfigMap(Map>> object){

MetricObj obj = null;

for (String key : object.keySet()) {

List> values = object.get(key);

for(Map map : values){

obj = new MetricObj();

String metricName = map.get("metricName");

obj.setAlarmValue(map.get("alarmValue"));

obj.setColumnName(map.get("columnName"));

obj.setTableName(map.get("tableName"));

obj.setMetricName(metricName);

metricMap.put(metricName,obj);

}

}

}

private static String getAlarmConfigFile() {

return System.getProperty("alarm.config.file");

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Vue结合SignalR实现前后端实时消息同步
下一篇:JavaWeb项目中dll文件动态加载方法解析(详细步骤)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~