#!/bin/bash# 设置应用程序路径(根据实际目录结构调整) APP_NAME="rywm-admin.jar" APP_PATH="../$APP_NAME" # 从bin目录上一级找到JAR文件# 获取当前日期,格式为:年-月-日 CURRENT_DATE=$(date +%Y-%m-%d)# 设置日志路径,按天存储(日志目录将创建在work目录下) LOG_DIR="../logs" LOG_FILE_NAME="${APP_NAME%.*}_${CURRENT_DATE.log" LOG_PATH="$LOG_DIR/$LOG_FILE_NAME"# 创建日志目录 if [ ! -d "$LOG_DIR" ]; thenmkdir -p "$LOG_DIR"echo "创建日志目录: $LOG_DIR" fi# 日志记录函数 log() {local message=$1local timestamp=$(date +"%Y-%m-%d %H:%M:%S")local log_message="[$timestamp] $message"echo "$log_message" >> "$LOG_PATH" }# 显示菜单函数 show_menu() {clearecho "================================="echo " JAR应用程序管理工具"echo "================================="echo " 应用程序: $APP_NAME"echo " 路径: $APP_PATH"echo "================================="echo ""echo " 1、 启动应用程序"echo " 2、 停止应用程序"echo " 3、 重启应用程序"echo " 4、 查看当天应用日志"echo " 5、 查看指定日期应用日志"echo " 6、 实时查看应用日志"echo " 7、 退出"echo ""echo "=================================" }# 获取用户选择函数 get_choice() {read -p "请输入选项 [1-7] " choicewhile [[ -z "$choice" || ! "$choice" =~ ^[1-7]$ ]]; doecho "无效的选项,请输入 1-7 之间的数字!"sleep 2show_menuread -p "请输入选项 [1-7] " choicedoneecho "$choice" }# 启动应用程序函数 start_app() {echo "正在启动应用程序..."log "尝试启动应用程序..."# 检查应用是否已在运行pid=$(ps aux | grep "$APP_NAME" | grep -v grep | awk '{print $2}')if [ -n "$pid" ]; thenecho "应用程序已在运行,进程ID: $pid"log "启动失败:应用程序已在运行,进程ID: $pid"read -p "按回车键继续..."returnfi# 启动应用并后台运行nohup java -Dfile.encoding=UTF-8 -jar "$APP_PATH" >> "$LOG_PATH" 2>&1 &echo "应用程序启动中..."sleep 2# 检查启动是否成功pid=$(ps aux | grep "$APP_NAME" | grep -v grep | awk '{print $2}')if [ -n "$pid" ]; thenecho "应用程序已启动,进程ID: $pid"log "应用程序已启动,进程ID: $pid"elseecho "应用程序启动失败,请查看日志"log "应用程序启动失败"firead -p "按回车键继续..." }# 停止应用程序函数 stop_app() {echo "正在停止应用程序..."log "尝试停止应用程序..."pid=$(ps aux | grep "$APP_NAME" | grep -v grep | awk '{print $2}')if [ -n "$pid" ]; thenkill -9 "$pid"echo "正在终止进程 $pid..."sleep 2# 确认进程已停止if ps -p "$pid" > /dev/null; thenecho "终止进程失败,请手动检查"log "终止进程失败,进程ID: $pid"elseecho "应用程序已停止"log "应用程序已停止,进程ID: $pid"fielseecho "未找到正在运行的应用程序"log "停止失败:未找到正在运行的应用程序"firead -p "按回车键继续..." }# 重启应用程序函数 restart_app() {echo "正在重启应用程序..."log "尝试重启应用程序..."stop_appstart_app }# 查看当天应用日志函数 view_today_log() {echo "正在查看当天应用日志: $LOG_PATH"if [ -f "$LOG_PATH" ]; thenless "$LOG_PATH"elseecho "当天日志文件不存在!"log "查看当天日志失败:日志文件不存在"firead -p "按回车键继续..." }# 查看指定日期应用日志函数 view_specific_log() {read -p "请输入要查看日志的日期(格式:年-月-日,例如 2025-04-29)" specific_datespecific_log_name="${APP_NAME%.*}_${specific_date}.log"specific_log_path="$LOG_DIR/$specific_log_name"if [ -f "$specific_log_path" ]; thenless "$specific_log_path"elseecho "指定日期的日志文件不存在:$specific_log_path"log "查看指定日期日志失败:日志文件不存在,日期:$specific_date"firead -p "按回车键继续..." }# 实时查看应用日志函数 view_realtime_log() {echo "正在实时查看应用日志(按 Ctrl + C 停止查看)..."if [ -f "$LOG_PATH" ]; thentail -f -n 1000 "$LOG_PATH"elseecho "日志文件不存在!"firead -p "按回车键继续..." }# 主循环 while true; doshow_menuchoice=$(get_choice)case $choice in1) start_app ;;2) stop_app ;;3) restart_app ;;4) view_today_log ;;5) view_specific_log ;;6) view_realtime_log ;;7) echo "退出应用程序管理工具..."log "退出应用程序管理工具"break ;;*) echo "无效的选项,请输入 1-7 之间的数字!"sleep 2 ;;esac done
目录结构
/home/bizuser/logs
/home/bizuser/work/logs
/home/bizuser/work/bin/restart.sh
/home/binzuser/work/rywm-admin.jar
执行权限
chmod +x /home/bizuser/work/bin/restart.sh