OpenClaw Cron 任务创建教程

openclaw openclaw官方 2

Cron 简介

Cron 是 Linux/Unix 系统中的任务调度器,用于在预定时间自动执行命令或脚本,OpenClaw 项目可以通过 Cron 实现自动化任务。

OpenClaw Cron 任务创建教程-第1张图片-OpenClaw开源下载|官方OpenClaw下载

检查 Cron 服务状态

# 检查 cron 是否安装
crontab -l
# 检查 cron 服务状态 (系统不同命令可能不同)
sudo systemctl status cron    # Ubuntu/Debian
sudo systemctl status crond   # CentOS/RHEL

编辑 Cron 任务

# 编辑当前用户的 cron 任务
crontab -e
# 查看当前用户的 cron 任务
crontab -l
# 删除当前用户的所有 cron 任务
crontab -r

Cron 时间格式

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期几 (0 - 7) (0和7都代表星期日)
|    |    |    +---------- 月份 (1 - 12)
|    |    +--------------- 日期 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

OpenClaw 相关 Cron 示例

示例 1:每天凌晨 2 点执行 OpenClaw 爬虫

# 每天凌晨 2:00 运行 OpenClaw 主脚本
0 2 * * * /usr/bin/python3 /path/to/openclaw/main.py >> /path/to/openclaw/logs/cron.log 2>&1

示例 2:每小时执行一次数据同步任务

# 每小时的第 30 分钟执行数据同步
30 * * * * /usr/bin/python3 /path/to/openclaw/sync_data.py

示例 3:工作日每天上午 9 点和下午 5 点执行

# 周一到周五,上午 9:00 和下午 5:00 执行
0 9,17 * * 1-5 /usr/bin/python3 /path/to/openclaw/daily_tasks.py

示例 4:每 15 分钟检查一次服务状态

# 每 15 分钟执行一次监控脚本
*/15 * * * * /usr/bin/python3 /path/to/openclaw/health_check.py

示例 5:每月第一天清理日志

# 每月 1 号凌晨 3:00 清理日志
0 3 1 * * /bin/bash /path/to/openclaw/scripts/cleanup_logs.sh

环境变量设置

为了确保 OpenClaw 在 Cron 中正常运行,建议在脚本中设置环境变量:

# 方法 1:在 crontab 文件顶部设置
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PYTHONPATH=/path/to/openclaw
# 方法 2:在 wrapper 脚本中设置
#!/bin/bash
export PATH=/usr/local/bin:$PATH
export PYTHONPATH=/path/to/openclaw:$PYTHONPATH
cd /path/to/openclaw
python3 main.py

创建 Cron Wrapper 脚本

#!/bin/bash
# 文件名: run_openclaw.sh
# 路径: /path/to/openclaw/scripts/
# 设置环境
export PATH=/usr/local/bin:$PATH
export PYTHONPATH=/path/to/openclaw:$PYTHONPATH
# 切换到项目目录
cd /path/to/openclaw
# 激活虚拟环境(如果使用)
source venv/bin/activate
# 执行 Python 脚本
python3 main.py >> logs/$(date +\%Y\%m\%d).log 2>&1
# 发送通知(可选)
if [ $? -eq 0 ]; then
    echo "OpenClaw executed successfully at $(date)" | mail -s "OpenClaw Success" admin@example.com
else
    echo "OpenClaw failed at $(date)" | mail -s "OpenClaw Failed" admin@example.com
fi
# 给脚本执行权限
chmod +x /path/to/openclaw/scripts/run_openclaw.sh
# Cron 配置
0 2 * * * /path/to/openclaw/scripts/run_openclaw.sh

调试 Cron 任务

检查日志

# 查看系统 cron 日志
sudo tail -f /var/log/syslog | grep cron    # Ubuntu/Debian
sudo tail -f /var/log/cron                  # CentOS/RHEL

测试命令

# 临时测试 Cron 命令
* * * * * /path/to/test_script.sh  # 每分钟执行一次测试

重定向输出

# 将输出重定向到文件以便调试
0 2 * * * /path/to/script.sh > /tmp/cron_debug.log 2>&1

高级用法

随机延迟执行(避免任务集中)

# 在凌晨 2:00 到 2:30 之间随机执行
0 2 * * * sleep $((RANDOM \% 1800)) && /path/to/openclaw/main.py

错误重试机制

#!/bin/bash
# retry_script.sh
MAX_RETRIES=3
RETRY_COUNT=0
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
    python3 /path/to/openclaw/main.py
    if [ $? -eq 0 ]; then
        echo "Success at $(date)"
        exit 0
    fi
    RETRY_COUNT=$((RETRY_COUNT+1))
    echo "Retry $RETRY_COUNT failed, waiting 60 seconds..."
    sleep 60
done
echo "All retries failed at $(date)"
exit 1

安全建议

  1. 最小权限原则:使用专用用户运行 OpenClaw

    sudo useradd -r -s /bin/false openclaw_user
    sudo crontab -u openclaw_user -e
  2. 配置文件保护

    chmod 600 /path/to/openclaw/config.yaml
  3. 日志轮转

    # /etc/logrotate.d/openclaw
    /path/to/openclaw/logs/*.log {
        daily
        rotate 30
        compress
        missingok
        notifempty
    }

常见问题解决

问题 1:Cron 任务不执行

  • 检查服务状态:sudo systemctl status cron
  • 检查路径:在脚本中使用绝对路径
  • 检查权限:确保脚本有执行权限

问题 2:Python 模块找不到

  • 在脚本中设置 PYTHONPATH
  • 使用虚拟环境的绝对路径

问题 3:依赖服务未启动

# 在脚本开头检查依赖
#!/bin/bash
if ! pgrep -x "redis-server" > /dev/null; then
    echo "Redis not running, starting..."
    sudo systemctl start redis
fi

这个教程涵盖了 OpenClaw 项目使用 Cron 的基本到高级用法,根据实际需求调整时间计划和脚本路径。

标签: OpenClaw Cron 任务创建教程

抱歉,评论功能暂时关闭!