jar在linux后台启动脚本
linux启动jar的脚本
脚本代码
#!/bin/bash
# 结合maven瘦身启动效果更佳
APP_NAME=lccsetsun_utils
VERSION=1.0.0-SNAPSHOT
SERVER_PORT=8091
ACTIVE_PROFILE=prod
GC_TIME=`date "+%Y%m%d%H%M%S"`
APP_HOME=$(dirname $(readlink -f "$0"))/
JAR_FILE=$APP_HOME/$APP_NAME-$VERSION.jar
if [ ! $JAVA_HOME ];then
export JAVA_HOME=/usr
fi
if [ ! -d "$APP_HOME/logs" ];then
mkdir $APP_HOME/logs
fi
if [ ! -d "$APP_HOME/logs/gc" ];then
mkdir $APP_HOME/logs/gc
fi
LOG_FILE=$APP_HOME/logs/$APP_NAME.out
GC_LOG_PATH=$APP_HOME/logs/gc/gc-$APP_NAME-$GC_TIME.log
HEAP_DUMP_PATH=$APP_HOME/logs/heapdump/
MONITOR_FILE=$APP_HOME/monitor.sh
#JVM参数
JVM_OPTS="-Dapp.name=$APP_NAME
-Dfile.encoding=UTF8
-Dlog.path=$APP_HOME/logs
-Xms256M
-Xmx256M
-XX:NewRatio=3
-XX:SurvivorRatio=8
-XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads=2
-XX:CMSInitiatingOccupancyFraction=70
-XX:MaxGCPauseMillis=1000
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:$GC_LOG_PATH
-XX:+HeapDumpOnOutOfMemoryError
-XX:+DisableExplicitGC
-XX:HeapDumpPath=$HEAP_DUMP_PATH"
# 应用监控探针 可选
JVM_AGENT="-javaagent:/home/soft/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=${APP_NAME} -Dskywalking.collector.backend_service=yourIP:11800"
appPid=0
monitorPid=0
start(){
checkappPid
if [ ! -n "$appPid" ]; then
nohup $JAVA_HOME/bin/java -jar $JVM_OPTS $JAR_FILE --spring.profiles.active=$ACTIVE_PROFILE --server.port=$SERVER_PORT >$LOG_FILE 2>&1 &
if [ ! "$CHECK_URL" ]; then
tail -f $LOG_FILE
fi
else
echo "$APP_NAME is running PID: $appPid"
fi
}
status(){
checkappPid
if [ ! -n "$appPid" ]; then
echo "$APP_NAME not runing"
else
echo "$APP_NAME runing PID: $appPid"
fi
}
checkappPid(){
appPid=`ps -ef |grep $JAR_FILE |grep -v grep |awk '{print $2}'`
}
checkMonitorPid(){
monitorPid=`ps -ef |grep $MONITOR_FILE |grep -v grep |awk '{print $2}'`
}
stop(){
checkappPid
if [ ! -n "$appPid" ]; then
echo "$APP_NAME not running"
else
kill -9 $appPid
echo "$APP_NAME stopped..."
fi
#监控脚本重启时不kill监控进程
if [ ! "$CHECK_URL" ]; then
checkMonitorPid
if [ ! -n "$monitorPid" ];then
echo "$MONITOR_FILE not running"
else
kill -9 $monitorPid
echo "$MONITOR_FILE stopped..."
fi
fi
}
restart(){
stop
sleep 1s
start
}
case $1 in
start) start;;
stop) stop;;
restart) restart;;
status) status;;
*) echo "require start|stop|restart|status" ;;
esac
需要的修改配置信息的地方
//修改为 自己的应用jar包
APP_NAME=lccsetsun_utils
VERSION=1.0.0-SNAPSHOT
SERVER_PORT=8091
ACTIVE_PROFILE=prod
可选功能
- 探针监控功能
# 应用监控探针 可选 修改此处为 自己的探针部署地址和jar包地址
JVM_AGENT="-javaagent:/home/soft/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=${APP_NAME} -Dskywalking.collector.backend_service=yourIP:11800"
- 配置探针监控
// 在 start{...} 方法中加入 ${JVM_AGENT} 示例:
start(){
checkappPid
if [ ! -n "$appPid" ]; then
nohup $JAVA_HOME/bin/java -jar $JVM_OPTS $JAR_FILE --spring.profiles.active=$ACTIVE_PROFILE --server.port=$SERVER_PORT >$LOG_FILE 2>&1 &
if [ ! "$CHECK_URL" ]; then
tail -f $LOG_FILE
fi
else
echo "$APP_NAME is running PID: $appPid"
fi
}
// 修改为:
start(){
checkappPid
if [ ! -n "$appPid" ]; then
nohup $JAVA_HOME/bin/java ${JVM_AGENT} -jar $JVM_OPTS $JAR_FILE --spring.profiles.active=$ACTIVE_PROFILE --server.port=$SERVER_PORT >$LOG_FILE 2>&1 &
if [ ! "$CHECK_URL" ]; then
tail -f $LOG_FILE
fi
else
echo "$APP_NAME is running PID: $appPid"
fi
}
如何使用
cd /指定目录
vim start.sh
// 复制上述脚本代码
:wq!
启动
sh /指定目录/start.sh start
停止
sh /指定目录/start.sh stop
重启
sh /指定目录/start.sh restart
说明
- linux 服务器一键启动jar包脚本,附带探针监控配置信息,可自由选择是否添加相关监控,适用于 linux centOS 版本
本文来自博客园,作者:lccsetsun,转载请注明原文链接:https://www.cnblogs.com/lccsetsun/p/14281264.html

linux 服务器一键启动jar包脚本,附带探针监控配置信息,可自由选择是否添加相关监控,适用于 linux centOS 版本
浙公网安备 33010602011771号