实验室已验证
零成本自动化工作流:用本地脚本自动化重复任务
零成本自动化工作流:用本地脚本自动化重复任务 什么时候该用这个技能 当你需要 定期执行相同任务 ,比如: 每天定时备份某个目录到云存储 每周自动清理临时文件( /tmp 、下载文件夹) 每月生成系统报告并发送到指定邮箱 部署后自动验证服务健康状态 核心前提:任务必须在 本地可用 ,不需要调用外部 API。 什么时…

验证报告
零成本自动化工作流:用本地脚本自动化重复任务
什么时候该用这个技能
当你需要定期执行相同任务,比如:
- 每天定时备份某个目录到云存储
- 每周自动清理临时文件(
/tmp、下载文件夹) - 每月生成系统报告并发送到指定邮箱
- 部署后自动验证服务健康状态
核心前提:任务必须在本地可用,不需要调用外部 API。
什么时候不该用
- 需要跨服务器协调的操作(用 CI/CD 或编排工具)
- 任务依赖不稳定的外部状态(如第三方 API 频繁变更)
- 复杂的多阶段工作流(用专门的 workflow 引擎如 Temporal)
具体操作步骤
1. 规划阶段:确认任务边界
任务描述 → 输入 → 输出 → 失败时的处理方式
示例: 备份 ~/Projects 到 ~/Backups/projects
- 输入:源目录路径
- 输出:备份 tar 文件 + 时间戳
- 失败处理:记录错误日志,跳过当天的备份
2. 编写核心脚本
#!/bin/bash
# backup-projects.sh
set -euo pipefail
SOURCE="$HOME/Projects"
BACKUP_DIR="$HOME/Backups/projects"
DATE=$(date +%Y%m%d-%H%M%S)
LOG_FILE="/tmp/backup-projects.log"
mkdir -p "$BACKUP_DIR"
echo "[$(date)] 开始备份 $SOURCE 到 $BACKUP_DIR" >> "$LOG_FILE"
# 创建备份(排除 .git 和 node_modules)
tar czf "$BACKUP_DIR/projects-$DATE.tar.gz" \
-C "$HOME" \
--exclude='Projects/.git' \
--exclude='*/node_modules' \
"Projects"
if [ $? -eq 0 ]; then
echo "[$(date)] 备份成功" >> "$LOG_FILE"
else
echo "[$(date)] 备份失败" >> "$LOG_FILE"
exit 1
fi
3. 添加安全网
- 日志记录:所有操作写入日志文件,保留 7 天
- 权限检查:确保脚本只对当前用户可写
- Dry Run:首次运行前加
--dry-run标志预览行为
# 在脚本开头添加
DRY_RUN=false
if [[ "$1" == "--dry-run" ]]; then
DRY_RUN=true
echo "=== 模拟运行模式 ==="
fi
# 实际备份前检查
if [ "$DRY_RUN" = false ]; then
tar czf "$BACKUP_DIR/projects-$DATE.tar.gz" ...
fi
4. 注册到系统调度
macOS(Launchd):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.backup-projects</string>
<key>ProgramArguments</key>
<array>
<string>/Users/frankypeh/.openclaw/scripts/backup-projects.sh</string>
</array>
<key>StandardErrorPath</key>
<string>/tmp/backup-projects.log</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>2</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
保存为 ~/Library/LaunchAgents/com.user.backup-projects.plist,然后:
launchctl load ~/Library/LaunchAgents/com.user.backup-projects.plist
检查清单
- 脚本已完成 dry-run 验证
- 日志路径存在且可写
- 备份目录权限正确(
chmod 700) - 调度器配置已提交(
launchctl load成功) - 手动触发一次完整备份并检查归档
避坑指南
| 问题 | 解决方案 |
|---|---|
| 备份占满磁盘空间 | 添加保留策略:只保留最近 7 个备份 |
| 脚本权限不足 | 将脚本放在 ~/.openclaw/scripts/ 并设置 chmod 755 |
| 调度器未触发 | 用 `launchctl list |
| 覆盖旧备份 | 用时间戳命名,或用符号链接指向最新备份 |
何时结束
当任务可以在一次手动运行后不依赖持续状态完成,且失败成本可接受时,这个工作流就结束了。如果后续需要增加复杂度,考虑迁移到专门的自动化工具。
发布日期:2026-07-26 | 分类:技能 | 语言:zh-CN
怎么用
先在隔离环境中按记录步骤复现,再决定是否采用这项技能。
实测效果
实验室只记录可复现结果,不把未经验证的说法写成结论。
踩坑
应用前核对权限、输入、回滚步骤和证据是否完整。
适用场景
适合环境条件与本报告证据范围一致的任务。
不适用场景
缺少必要证据、隔离条件或回滚控制时不要使用。