linux脚本,支持jar启动,停止,重启
新建 runjar.sh
给 runjar.sh 授权可执行权限
chmod +x runjar.sh
#!/bin/bash
# 自动获取脚本所在目录(保证 jar 和 sh 同目录即可)
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
JAR_NAME="whisexchange.jar"
JAR_PATH="${SCRIPT_DIR}/${JAR_NAME}"
# JVM 参数
JAVA_OPTS="-Xms1024m -Xmx1024m -Dfile.encoding=UTF-8"
# JAR 参数
JAR_OPTS="--server.port=8181 --spring.config.location=${SCRIPT_DIR}/application-pro.yml"
# ===================== 修复点:每次调用都重新获取 PID =====================
get_pid() {
ps -ef | grep "${JAR_PATH}" | grep -v grep | awk '{print $2}'
}
# 启动
start() {
local PID=$(get_pid)
if [ -n "$PID" ]; then
echo "服务已运行,PID=${PID}"
exit 1
fi
echo "正在启动 ${JAR_PATH} ..."
cd "${SCRIPT_DIR}"
nohup java ${JAVA_OPTS} -jar "${JAR_PATH}" ${JAR_OPTS} \
>> nohup.out 2>&1 &
sleep 2
local NEW_PID=$(get_pid)
if [ -n "$NEW_PID" ]; then
echo "启动成功,PID=${NEW_PID}"
else
echo "启动失败,请查看 nohup.out"
fi
}
# 停止
stop() {
local PID=$(get_pid)
if [ -z "$PID" ]; then
echo "服务未运行"
return
fi
echo "停止服务 PID=${PID}"
kill -9 "${PID}"
sleep 1
echo "服务已停止"
}
# 重启
restart() {
stop
sleep 1
start
}
case "$1" in
start) start ;;
stop) stop ;;
restart) restart ;;
*) echo "用法: $0 {start|stop|restart}" ;;
esac注意:本文归作者所有,未经作者允许,不得转载
