每日备份 2026-06-10 12:57:13
This commit is contained in:
1 parent
fda2ccb8c2
commit
3d2e638c6a
244 files changed
+58890
-3
No files matched your search
Executable
+121
@@ -0,0 +1,121 @@
|
||||
#!/bin/bash
|
||||
# 1号机任务检查脚本
|
||||
# 定时检查任务队列,自动执行学习任务
|
||||
|
||||
TASK_QUEUE="/root/.openclaw/workspace/memory/task_queue.txt"
|
||||
LEARN_SCRIPT="/root/.openclaw/tools/learn-workflow.sh"
|
||||
REPORT_DIR="/root/.openclaw/workspace/memory/reports"
|
||||
LOG_FILE="/root/.openclaw/workspace/memory/task.log"
|
||||
DATE=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
mkdir -p "$REPORT_DIR"
|
||||
|
||||
echo "=== 任务检查: $DATE ===" >> "$LOG_FILE"
|
||||
|
||||
# 检查任务队列是否存在
|
||||
if [ ! -f "$TASK_QUEUE" ]; then
|
||||
echo "队列文件不存在" >> "$LOG_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 当前时间戳
|
||||
NOW=$(date +%s)
|
||||
|
||||
# 读取并执行到期任务
|
||||
TEMP_FILE=$(mktemp)
|
||||
COMPLETED_FILE=$(mktemp)
|
||||
REPORT_FILE="$REPORT_DIR/$(date '+%Y%m%d_%H%M%S').report"
|
||||
|
||||
# 开始报告
|
||||
{
|
||||
echo "任务执行报告"
|
||||
echo "时间: $DATE"
|
||||
echo "================"
|
||||
} > "$REPORT_FILE"
|
||||
|
||||
# 读取并执行到期任务
|
||||
while IFS= read -r line; do
|
||||
# 跳过注释和空行
|
||||
[[ "$line" =~ ^#.*$ ]] && continue
|
||||
[[ -z "$line" ]] && continue
|
||||
|
||||
# 解析: 时间|主题|类型|数量
|
||||
TIMESTAMP=$(echo "$line" | cut -d'|' -f1)
|
||||
TOPIC=$(echo "$line" | cut -d'|' -f2)
|
||||
TYPE=$(echo "$line" | cut -d'|' -f3)
|
||||
COUNT=$(echo "$line" | cut -d'|' -f4)
|
||||
|
||||
# 转换时间为秒
|
||||
TASK_SECONDS=$(date -d "$TIMESTAMP" +%s 2>/dev/null)
|
||||
if [ -z "$TASK_SECONDS" ]; then
|
||||
echo " ⚠️ 无效时间格式: $TIMESTAMP"
|
||||
echo "[跳过] $TIMESTAMP | $TOPIC | 无效时间格式" >> "$REPORT_FILE"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 检查是否到期
|
||||
if [ "$TASK_SECONDS" -le "$NOW" ]; then
|
||||
echo "执行: $TOPIC ($TYPE) x$COUNT" >> "$LOG_FILE"
|
||||
echo "- 任务: $TOPIC" >> "$REPORT_FILE"
|
||||
echo " 类型: $TYPE" >> "$REPORT_FILE"
|
||||
echo " 数量: $COUNT" >> "$REPORT_FILE"
|
||||
echo " 状态: " >> "$REPORT_FILE"
|
||||
|
||||
# 执行学习任务
|
||||
TASK_LOG=$(mktemp)
|
||||
if "$LEARN_SCRIPT" "$TOPIC" "$TYPE" "$COUNT" >> "$TASK_LOG" 2>&1; then
|
||||
echo " ✓ 完成: $TOPIC" >> "$LOG_FILE"
|
||||
echo " 完成" >> "$REPORT_FILE"
|
||||
# 记录到已完成
|
||||
echo "$line" >> "$COMPLETED_FILE"
|
||||
else
|
||||
echo " ✗ 失败: $TOPIC" >> "$LOG_FILE"
|
||||
echo " 失败 (保留重试)" >> "$REPORT_FILE"
|
||||
# 保留到下一轮
|
||||
echo "$line" >> "$TEMP_FILE"
|
||||
fi
|
||||
|
||||
# 追加任务日志
|
||||
echo " 日志:" >> "$REPORT_FILE"
|
||||
sed 's/^/ /' "$TASK_LOG" >> "$REPORT_FILE"
|
||||
rm -f "$TASK_LOG"
|
||||
else
|
||||
# 未到期,保留
|
||||
echo "$line" >> "$TEMP_FILE"
|
||||
fi
|
||||
done < "$TASK_QUEUE"
|
||||
|
||||
# 结束报告
|
||||
{
|
||||
echo "================"
|
||||
echo "完成: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
} >> "$REPORT_FILE"
|
||||
|
||||
# 更新任务队列
|
||||
if [ -f "$COMPLETED_FILE" ]; then
|
||||
# 添加已完成标记
|
||||
echo "" >> "$COMPLETED_FILE"
|
||||
echo "# 完成于: $DATE" >> "$COMPLETED_FILE"
|
||||
cat "$COMPLETED_FILE" >> "$TASK_QUEUE.completed"
|
||||
fi
|
||||
|
||||
if [ -f "$TEMP_FILE" ] && [ -s "$TEMP_FILE" ]; then
|
||||
mv "$TEMP_FILE" "$TASK_QUEUE"
|
||||
else
|
||||
rm -f "$TASK_QUEUE"
|
||||
fi
|
||||
|
||||
# 清理
|
||||
rm -f "$COMPLETED_FILE"
|
||||
|
||||
# 清理旧报告 (保留最近3天)
|
||||
find "$REPORT_DIR" -name "*.report" -mtime +3 -delete
|
||||
|
||||
echo "检查完成: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
|
||||
echo "" >> "$LOG_FILE"
|
||||
|
||||
# 显示报告摘要
|
||||
if [ -f "$REPORT_FILE" ]; then
|
||||
LINES=$(wc -l < "$REPORT_FILE")
|
||||
echo "报告: $REPORT_FILE ($LINES 行)"
|
||||
fi
|
||||
Reference in new issue
Block a user