linux重启java脚本restart_myapp.sh
#!/bin/bash # 配置变量 APP_NAME="cm-pv" JAR_PATH="/data/deploy/cmpv/cm-pv.jar" LOG_DIR="/data/deploy/cmpv/target/blade/log" LOG_FILE="/data/deploy/cmpv/target/blade/log/restart.log" APP_PORT=8060 # 创建日志目录(如果不存在) mkdir -p "$(dirname "$LOG_FILE")" mkdir -p "$LOG_DIR" # 记录开始时间 echo "---" >> "$LOG_FILE" echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始执行重启脚本" >> "$LOG_FILE" # 1. 停止旧进程 echo "正在停止: $APP_NAME ..." >> "$LOG_FILE" # 查找进程ID(多种方式) PID=$(ps -ef | grep "cm-pv.jar" | grep "spring.profiles.active=prod" | grep -v grep | awk '{print $2}') if [ -z "$PID" ]; then # 如果第一种方式没找到,尝试其他方式 PID=$(ps -ef | grep "java.*cm-pv" | grep -v grep | awk '{print $2}') fi if [ ! -z "$PID" ]; then echo "找到 PID: $PID" >> "$LOG_FILE" kill -9 "$PID" echo "已杀死进程: $PID" >> "$LOG_FILE" sleep 5 else echo "未找到运行中的进程" >> "$LOG_FILE" fi # 2. 启动新进程 echo "正在启动 $APP_NAME ..." >> "$LOG_FILE" cd /data/deploy/cmpv || exit 1 # 备份旧日志 if [ -f nohup.out ]; then mv nohup.out "nohup.out.$(date +%Y%m%d%H%M%S)" fi # 启动应用 nohup java -jar -Xms8192m -Xmx8192m \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=/usr/local \ "$JAR_PATH" \ --spring.profiles.active=prod >> nohup.out 2>&1 & NEW_PID=$! echo "应用已启动, 新进程 PID: $NEW_PID" >> "$LOG_FILE" # 等待一会儿确认进程真的启动了 sleep 3 # 验证进程是否在运行 if ps -p $NEW_PID > /dev/null; then echo "进程 $NEW_PID 确认正在运行" >> "$LOG_FILE" echo $NEW_PID > /data/deploy/cmpv/app.pid else echo "警告:进程可能启动失败" >> "$LOG_FILE" echo "请查看 nohup.out 获取详细信息:" >> "$LOG_FILE" tail -20 nohup.out >> "$LOG_FILE" fi echo "$(date '+%Y-%m-%d %H:%M:%S') - 重启脚本执行完毕" >> "$LOG_FILE"
使用dos2unix转换格式(推荐)
# 安装dos2unix(如果尚未安装) sudo yum install dos2unix -y # 对于CentOS/RHEL # 或者 sudo apt-get install dos2unix -y # 对于Ubuntu/Debian # 转换文件格式 dos2unix /data/deploy/cmpv/restart_cmpv.sh # 然后重新执行 chmod +x /data/deploy/cmpv/restart_cmpv.sh ./restart_cmpv.sh
posted on 2025-09-03 10:23 yebinghuai-qq-com 阅读(6) 评论(0) 收藏 举报
浙公网安备 33010602011771号