随笔- 298  文章- 4  评论- 35  阅读- 96万 

 

复制代码
#!/bin/bash

# 定义路径和变量
JAR_PROCESS_NAME="java"
JAR_FILE_PATH="/root/dfsz/jars/gw-dz-core.jar"  # 请确认此路径是你的Jar文件的实际路径
LOG_FILE="/root/dfsz/jars/restartBash.log"
FIND_LOG_FILE="/root/dfsz/jars/log.log"

# 初始化重启次数
RESTART_COUNT=0

# 定义启动 Jar 进程的函数
function start_jar {
    nohup java -Xms12g -Xmx12g -jar $JAR_FILE_PATH --spring.profiles.active=prod_92 > log.log 2>&1 &
    echo  "[$(date)] Jar process started.\n" >> $LOG_FILE

    # 记录重启次数和时间到重启日志
    RESTART_COUNT=$((RESTART_COUNT + 1))
    echo  "[$(date)] Jar process restarted. Total restarts: $RESTART_COUNT\n" >> $LOG_FILE
}

# 定义监控 Jar 进程的函数
function monitor_jar {
    while true; do
        # 检查是否有 Java 进程运行
        if ! pgrep -f $JAR_PROCESS_NAME > /dev/null; then
            echo  "[$(date)] Jar process not found, restarting...\n" >> $LOG_FILE
            start_jar
        fi

        # 检查日志文件中是否包含内存溢出错误
        if grep -q "java.lang.OutOfMemoryError" $FIND_LOG_FILE; then
            echo  "[$(date)] Detected OutOfMemoryError, restarting jar...\n" >> $LOG_FILE
            pkill -f $JAR_PROCESS_NAME
            start_jar
            # 清空日志文件以避免重复处理相同错误
            #: > $LOG_FILE
        fi
        
        # 检查日志文件中是否包含mongo错误
        if grep -q "state should be: open" $FIND_LOG_FILE; then
            echo  "[$(date)] Detected mongo: state should be: open, restarting jar...\n" >> $LOG_FILE
            pkill -f $JAR_PROCESS_NAME
            start_jar
        fi
        
        # 检查日志文件中是否包含 maxActive 错误
        if grep -q "maxActive 32" $FIND_LOG_FILE; then
            echo  "[$(date)] Detected maxActive: maxActive 32, restarting jar...\n" >> $LOG_FILE
            pkill -f $JAR_PROCESS_NAME
            start_jar
        fi

        # 等待10秒再检查
        sleep 30
    done
}

# 启动监控
monitor_jar
复制代码

 

 

后台启动脚本

nohup /root/dfsz/jars/restartBash.sh > /dev/null 2>&1 &

 

查看脚本是否启动

ps -ef|grep sh

 

 posted on   布鲁布鲁sky  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-11-27 Java 从服务器下载文件到本地(页面、后台、配置都有)
点击右上角即可分享
微信分享提示