定时任务调度定时任务调度
定时任务调度

技能简介

本技能用于在Linux/macOS系统上配置和管理周期性任务,涵盖传统cron语法、crontab文件操作,以及现代systemd timer替代方案。支持时区处理、失败重试、运行日志查看和常见故障排查。

能做什么

  • 编写cron表达式(分钟/小时/日期/月份/星期)
  • 使用crontab命令增删改查用户级定时任务
  • 创建systemd service+timer实现持久化调度
  • 处理跨时区的任务执行时间
  • 查看journald日志定位任务失败原因
  • 设置随机延迟避免并发冲突

使用说明

前置检查:确认系统已安装crontabsystemctl命令,支持Linux/Darwin环境。

快速开始

  1. 编辑当前用户crontab:crontab -e
  2. 添加一行测试任务:* * * * * echo "test" >> /tmp/cron-test.log
  3. 保存后查看列表:crontab -l
  4. 观察日志验证执行:tail -f /tmp/cron-test.log

systemd timer完整示例

# 创建服务文件
sudo tee /etc/systemd/system/myjob.service << 'EOF'
[Unit]
Description=My scheduled job
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh
EOF

# 创建定时器文件
sudo tee /etc/systemd/system/myjob.timer << 'EOF'
[Unit]
Description=Run myjob daily at 3 AM
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
EOF

# 加载并启用
sudo systemctl daemon-reload
sudo systemctl enable --now myjob.timer
systemctl list-timers

输入与输出

见下方输入与输出表格。

项目内容
输入cron表达式、脚本路径、执行用户、环境变量、时区
输出任务配置状态、执行日志、下次执行时间、失败通知
适用人群系统管理员、自动化开发工程师、DevOps运维、故障排查人员
不包含Windows计划任务、分布式调度、容器cron、秒级调度

 

风险提示

  • cron环境变量极简,务必在crontab顶部显式声明PATH
  • MAILTO配置错误会导致失败通知静默丢失
  • systemd timer的Persistent=true可能在服务器长期关机后触发积压任务风暴
  • 直接使用crontab -r会清空所有任务且无确认提示
  • 时区变更可能导致任务重复执行或跳过

来源信息

原始链接:https://github.com/openclaw/skills/tree/main/skills/gitgoodordietrying/cron-scheduling/SKILL.md
来源类型:GitHub仓库文档

数据统计

相关导航

暂无评论

none
暂无评论...