Files
cattleData/backend/start.sh

141 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# 牛只数据管理后端启动脚本
# 使用方法: ./start.sh [start|stop|restart]
APP_NAME="cattletends"
JAR_NAME="cattletends-1.0.0.jar"
APP_PORT=12240
JAVA_OPTS="-Xms512m -Xmx1024m"
SPRING_PROFILE="prod"
LOG_FILE="log.out"
PID_FILE="pid.${APP_NAME}"
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 检查jar文件是否存在
if [ ! -f "$JAR_PATH" ]; then
echo "错误: 找不到jar文件: $JAR_PATH"
echo "请先执行 mvn clean package 打包项目"
exit 1
fi
# 停止应用
function stopApp() {
echo "正在停止应用: $APP_NAME"
# 查找进程
PID=$(ps -ef | grep java | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
echo "找到进程 PID: $PID"
kill -15 $PID
# 等待进程结束最多等待10秒
for i in {1..10}; do
if ! ps -p $PID > /dev/null 2>&1; then
echo "应用已停止"
rm -f $PID_FILE
return 0
fi
sleep 1
done
# 如果还在运行,强制杀死
if ps -p $PID > /dev/null 2>&1; then
echo "强制停止进程..."
kill -9 $PID
rm -f $PID_FILE
fi
else
echo "应用未运行"
rm -f $PID_FILE
fi
}
# 启动应用
function startApp() {
echo "正在启动应用: $APP_NAME"
# 检查是否已经运行
PID=$(ps -ef | grep java | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
echo "应用已经在运行中PID: $PID"
return 1
fi
# 启动应用
nohup java $JAVA_OPTS \
-Dspring.profiles.active=$SPRING_PROFILE \
-Dserver.port=$APP_PORT \
-jar "$JAR_PATH" > "$LOG_FILE" 2>&1 &
# 等待启动
sleep 3s
# 检查进程
PID=$(ps -ef | grep java | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
echo "应用启动成功PID: $PID"
echo $PID > $PID_FILE
echo "日志文件: $LOG_FILE"
echo "查看日志: tail -f $LOG_FILE"
return 0
else
echo "应用启动失败,请查看日志: $LOG_FILE"
return 1
fi
}
# 重启应用
function restartApp() {
echo "========== 重启应用: $APP_NAME =========="
stopApp
sleep 2s
startApp
}
# 查看状态
function statusApp() {
PID=$(ps -ef | grep java | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
echo "应用运行中PID: $PID"
echo "端口: $APP_PORT"
echo "日志: $LOG_FILE"
else
echo "应用未运行"
fi
}
# 主逻辑
case "$1" in
start)
startApp
;;
stop)
stopApp
;;
restart)
restartApp
;;
status)
statusApp
;;
*)
echo "使用方法: $0 {start|stop|restart|status}"
echo ""
echo "参数说明:"
echo " start - 启动应用"
echo " stop - 停止应用"
echo " restart - 重启应用"
echo " status - 查看应用状态"
exit 1
;;
esac
exit $?