#!/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-11-27 Java 从服务器下载文件到本地(页面、后台、配置都有)