#!/bin/bash
#这里替换为jar包名字
APP_NAME=sdpxpt.jar
#根据实际情况修改参数
JVM="-server -Xms2g -Xmx2g -Xmn512m -XX:PermSize=128M -XX:MaxNewSize=128m -XX:MaxPermSize=25zh6m -Xss256k -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xloggc:/logs/xxx-server/GC/xxx-gc.log"
#APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status|log|backup] [port]"
exit 1
}
port=$2
#检查指定端口是否是有程序在运行
is_exist(){
# 默认端口
if [ "${port}" == "" ]; then
# 默认使用81
port=81
fi
# 获取端口占用的进程号
pid=`/usr/sbin/lsof -i:$port | awk 'NR == 2' | awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${port} 端口已经被 ${pid} 进程占用"
else
#nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1
#后台启动jar包,且控制环境变量,根据实际情况修改吧。
#nohup java $JVM -jar $APP_NAME --spring.profiles.active=prod > /dev/null 2>&1 &
nohup java -jar ${APP_NAME} --server.port=${port} >log.file 2>&1 &
echo " ${APP_NAME} 进程 $! 在 ${port} 端口启动中......"
log
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${port} 端口的进程 ${pid} 已经被中断"
else
echo "${port} 端口未启用"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${port} 端口已被进程 ${pid} 占用"
else
echo "${port} 端口未被占用"
fi
}
#重启
restart(){
stop
start
}
#日志
log(){
# 输出实时日志
tail -n 100 -f log.file
}
#备份
backup(){
#根据需求自定义备份文件路径。
BACKUP_PATH=./back/
#获取当前时间作为备份文件名
BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`
echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'
#备份当前jar包
cp -r ./$APP_NAME $BACKUP_PATH$BACKUP_DATE'.jar'
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
"log")
log
;;
"backup")
backup
;;
*)
usage
;;
esac
centos7 springboot项目自定义端口的启动,停止,重启的脚本
最新推荐文章于 2024-08-10 12:36:46 发布