#!/bin/bash # ============================================================================ # 定时后台学习 - crontab 管理 # ============================================================================ # 添加定时任务 add_cron() { echo "添加定时学习任务..." # 青龙:每小时学习1轮 (crontab -l 2>/dev/null | grep -v "qinglong-auto-learning"; echo "0 * * * * /root/.openclaw/scripts/auto-learning.sh 1 >> /var/log/openclaw/sleep-learning/qinglong-cron.log 2>&1") | crontab - # 守护者:每2小时学习1轮 (crontab -l 2>/dev/null | grep -v "guardian-auto-learning"; echo "0 */2 * * * /root/.openclaw/scripts/auto-learning.sh 1 >> /var/log/openclaw/sleep-learning/guardian-cron.log 2>&1") | crontab - echo "✅ 定时任务已添加" } # 移除定时任务 remove_cron() { echo "移除定时学习任务..." crontab -l 2>/dev/null | grep -v "auto-learning" | crontab - echo "✅ 已移除" } # 立即触发学习(不等待cron) trigger_now() { local robot="${1:-all}" if [ "$robot" = "qinglong" ] || [ "$robot" = "all" ]; then echo "🚀 立即触发青龙学习..." nohup /root/.openclaw/scripts/auto-learning.sh 1 > /tmp/qinglong-trigger.log 2>&1 & echo "青龙 PID: $!" fi if [ "$robot" = "guardian" ] || [ "$robot" = "all" ]; then echo "🚀 立即触发守护者学习..." nohup /root/.openclaw/scripts/auto-learning.sh 1 > /tmp/guardian-trigger.log 2>&1 & echo "守护者 PID: $!" fi } # 查看cron状态 status() { echo "╔════════════════════════════════════════════════════╗" echo "║ 定时学习任务状态 ║" echo "╚════════════════════════════════════════════════════╝" echo "" echo "📋 当前 Cron 任务:" crontab -l 2>/dev/null | grep "auto-learning" || echo " 无定时任务" echo "" echo "🔄 运行中的学习进程:" ps aux | grep "auto-learning.sh" | grep -v grep || echo " 无运行中的进程" echo "" echo "📊 最近学习记录:" echo "青龙: $(tail -3 /var/log/openclaw/sleep-learning/qinglong-cron.log 2>/dev/null | head -1 || echo '无')" echo "守护者: $(tail -3 /var/log/openclaw/sleep-learning/guardian-cron.log 2>/dev/null | head -1 || echo '无')" } # 主程序 case "$1" in add) add_cron ;; remove) remove_cron ;; trigger) trigger_now "${2:-all}" ;; status) status ;; *) echo "用法: $0 {add|remove|trigger [qinglong|guardian]|status}" ;; esac