本文首次发布于 Byron Han Blog, 作者 @han(Byron Han) ,转载请保留原文链接.
背景
若依(RuoYi)后端服务以 ruoyi-admin.jar 方式运行,偶尔会因为内存不足等原因意外停止。通过 crontab 定时检测并自动重启,实现进程守护。
守护脚本
创建脚本 /usr/local/app/backed/check_ruoyi.sh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
APP_NAME="ruoyi-admin.jar"
APP_DIR="/usr/local/app/backed"
LOG="${APP_DIR}/logs/watchdog.log"
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG"; }
if pgrep -f "$APP_NAME" > /dev/null 2>&1; then
log "OK: $APP_NAME 运行中"
else
log "WARN: $APP_NAME 未运行,重启中..."
cd "$APP_DIR" && ./ry.sh restart >> "$LOG" 2>&1
sleep 10
if pgrep -f "$APP_NAME" > /dev/null 2>&1; then
log "SUCCESS: 重启成功"
else
log "ERROR: 重启失败"
fi
fi
部署步骤
1. 创建脚本文件
将上述脚本保存到目标路径。
2. 赋予执行权限
1
chmod +x /usr/local/app/backed/check_ruoyi.sh
3. 配置 crontab 定时任务
每 5 分钟执行一次检测:
1
(crontab -l 2>/dev/null; echo "*/5 * * * * /bin/bash /usr/local/app/backed/check_ruoyi.sh") | crontab -
4. 验证定时任务
1
crontab -l
日志
所有检测和重启记录写入 ${APP_DIR}/logs/watchdog.log,格式如下:
1
2
3
[2026-04-27 10:00:01] OK: ruoyi-admin.jar 运行中
[2026-04-27 10:05:01] WARN: ruoyi-admin.jar 未运行,重启中...
[2026-04-27 10:05:11] SUCCESS: 重启成功