idea 服务器Debug端口启动设置
一:在阿里云服务器安全组已经设置了端口授权对象:
正确命令:
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998 -jar -Duser.timezone=GMT+08 -Xms256m -Xmx256m /opt/projects/*/*/*-starter-1.0-SNAPSHOT.jar --spring.profiles.active=test > sys01.log 2>&1 &
执行上面不成功时,执行下面命令【主要设置标红的地方】:
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0.0.0.0:9998 -jar -Duser.timezone=GMT+08 -Xms256m -Xmx256m /opt/projects/*/*/*-starter-1.0-SNAPSHOT.jar --server.address=0.0.0.0 --spring.profiles.active=test > sys01.log 2>&1 &
然后本地远程Debug,ok
二:编辑启动命令:
创建文件start.sh,并进行授权 chmod +x start.sh
先发送 TERM 信号让应用优雅关闭,只有在超时后才使用 KILL 强制终止
#!/bin/bash
JAR_NAME="**-admin.jar"
LOG_FILE="/tmp/${JAR_NAME}.log"echo "Stopping procedure: ${JAR_NAME}"
# 获取匹配的进程ID
pid=$(ps -ef | grep java | grep "${JAR_NAME}" | awk '{print $2}')if [ -n "$pid" ]; then
echo "Found old process with PID: $pid, attempting to stop it..."
kill -TERM $pid # 发送TERM信号,允许程序优雅关闭
# 等待最多30秒让进程退出
timeout=30
while [ $timeout -gt 0 ] && kill -0 $pid 2>/dev/null; do
echo "Waiting for process $pid to terminate... ($timeout seconds left)"
sleep 1
((timeout--))
done
# 如果进程仍然存在,则强制杀死
if kill -0 $pid 2>/dev/null; then
echo "Force killing process $pid"
kill -9 $pid
sleep 2 # 给系统一点时间清理资源
else
echo "Process $pid stopped gracefully"
fi
else
echo "No running process found for ${JAR_NAME}"
fi# 启动新服务
echo "Starting new instance of ${JAR_NAME}"
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998 \
-jar \
-XX:MetaspaceSize=512m \
-XX:MaxMetaspaceSize=512m \
-Xms1024m \
-Xmx1024m \
-Xmn128m \
-Xss256k \
-XX:SurvivorRatio=8 \
-XX:+UseConcMarkSweepGC \
/www/wwwroot/api/${JAR_NAME} \
--spring.profiles.active=dev > ${LOG_FILE} 2>&1 &echo "New instance started in background. Logs redirected to ${LOG_FILE}"