Ubuntu中Java的jar的bat脚本

bat启动脚本
#!/bin/bash

# 定义 Jar 包名称(确保和你的 Jar 包名一致)
JAR_NAME="jar-console.jar"

# 检查 Jar 包是否存在
if [ ! -f "$JAR_NAME" ]; then
    echo "错误:未找到 $JAR_NAME 文件,请确认脚本和 Jar 包在同一目录!"
    exit 1
fi

# 检查程序是否已在运行
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
    echo "程序已在运行,进程 ID:$PID"
    exit 0
fi

# 后台启动 Jar 包(nohup 让程序脱离终端,& 表示后台运行)
# 日志输出到 mqtt_run.log,错误日志也重定向到该文件(2>&1)
nohup java -jar "$JAR_NAME" > /dev/null 2>&1 &

# 等待 2 秒,检查启动是否成功
sleep 2
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
    echo "程序启动成功!进程 ID:$PID"
    echo "已禁用日志输出"
else
    echo "程序启动失败!请查看日志:"
fi
bat停止脚本
#!/bin/bash

# 定义 Jar 包名称(和启动脚本保持一致)
JAR_NAME="jar-console.jar"

# 查找进程 ID(排除 grep 自身的进程)
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')

if [ -z "$PID" ]; then
    echo "程序未在运行!"
    exit 0
fi

# 优雅停止进程(先发送 SIGTERM 信号,允许程序释放资源)
echo "正在停止程序,进程 ID:$PID..."
kill -15 "$PID"

# 等待 5 秒,检查是否停止成功
sleep 5
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
    echo "程序停止成功!"
else
    # 优雅停止失败,强制停止(SIGKILL 信号)
    echo "优雅停止失败,正在强制停止..."
    kill -9 "$PID"
    sleep 2
    echo "程序强制停止成功!"
fi

重启脚本带有kill端口和日志输出
#!/bin/bash

# 当前脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# 设置变量
JAR_NAME="jar-service.jar"
JAR_PATH="$SCRIPT_DIR/$JAR_NAME"
LOG_DIR="$SCRIPT_DIR/log"
LOG_FILE="$LOG_DIR/data-service-$(date +'%Y%m%d-%H%M%S').log"

# JVM 启动参数
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"

# 创建日志目录(如果不存在)
mkdir -p "$LOG_DIR"

# 杀掉旧进程
PID=$(pgrep -f "$JAR_NAME")
if [ -n "$PID" ]; then
    echo "[INFO] 正在停止旧进程:$PID"
    kill -9 "$PID"
    sleep 2
fi

# 启动新进程,local配置文件的后缀名
echo "[INFO] 启动 $JAR_NAME ..."
nohup java $JAVA_OPTS -jar "$JAR_PATH" --spring.profiles.active=local > "$LOG_FILE" 2>&1 &

# 实时打印日志到控制台
echo "[INFO] 日志文件:$LOG_FILE"
tail -f "$LOG_FILE"

posted @ 2026-03-19 15:55  爱豆技术部  阅读(2)  评论(0)    收藏  举报