Java Jar包启动与停止脚本

适合最简单的单 Jar 部署场景:一个配置文件、一个日志文件、后台常驻运行。

启动脚本

#!/bin/bash
 
JAR_NAME="app.jar"
CONFIG_FILE="application.properties"
LOG_FILE="app.log"
JAVA_OPTS="-Xms512m -Xmx1024m"
 
if [ ! -f "$JAR_NAME" ]; then
  echo "Error: $JAR_NAME not found!"
  exit 1
fi
 
if [ ! -f "$CONFIG_FILE" ]; then
  nohup java $JAVA_OPTS -jar "$JAR_NAME" > "$LOG_FILE" 2>&1 &
else
  nohup java $JAVA_OPTS -jar "$JAR_NAME" --spring.config.location="$CONFIG_FILE" > "$LOG_FILE" 2>&1 &
fi
 
PID=$!
 
echo "$JAR_NAME started successfully."
echo "Process ID: $PID"
echo "Log file: $(pwd)/$LOG_FILE"

停止脚本

#!/bin/bash
 
JAR_NAME="app.jar"
PID=$(ps -ef | grep java | grep "$JAR_NAME" | awk '{print $2}')
 
if [ -z "$PID" ]; then
  echo "No running process found for $JAR_NAME."
  exit 0
fi
 
echo "Stopping $JAR_NAME (PID: $PID)..."
kill -15 $PID
sleep 3
 
if ps -p $PID > /dev/null; then
  echo "Process $JAR_NAME (PID: $PID) is still running. Force killing..."
  kill -9 $PID
fi
 
echo "$JAR_NAME has been stopped."

边界

这套脚本适合单实例、人工部署,不适合 systemd、Supervisor、Kubernetes 这类更正式的运行方式。