跳转到内容
类型解锁
阶段快速获胜
难度简单
工作移动开发
用于开发团队
用于个人创始人
服务Cron
服务终端
为何选 HoodyHTTP 原生
为何选 Hoody默认多人协作
类型解锁
阶段快速获胜
难度简单
工作移动开发
用于开发团队
用于个人创始人
服务Cron
服务终端
为何选 HoodyHTTP 原生
为何选 Hoody默认多人协作
类型解锁
阶段快速获胜
难度简单
工作移动开发
用于开发团队
用于个人创始人
服务Cron
服务终端
为何选 HoodyHTTP 原生
为何选 Hoody默认多人协作
类型解锁
阶段快速获胜
难度简单
工作移动开发
用于开发团队
用于个人创始人
服务Cron
服务终端
为何选 HoodyHTTP 原生
为何选 Hoody默认多人协作
CRON · PATCH · 登机口 47B

在机场用手机编辑你的 crontab

登机广播响起。每日报表任务设在 UTC 早 7 点,但收件人在东京,时间不对。你在手机上打开 crontab URL,点那一行,改两个字段,按保存。PATCH 通过。任务今晚按新的时间表触发。无 SSH 会话、无跳板机、无笔记本。

阅读 cron 文档

手机来一次 PATCH,时间表上一条条目

cron 服务通过 HTTPS 讲 JSON。手机的浏览器对条目的 UUID 发一次 PATCH,带上新的 schedule 字段。系统 crontab 由服务重新注入。下次触发时间在响应体里。

patch.from-phone.sh
PATCH · sender
# 在 6 寸屏上的两行编辑curl -X PATCH \\"https://cron.containers.hoody.com/users/me/entries/0a3c8" \\-H "Content-Type: application/json" \\-d ["schedule":"30 4 * * 1-5"]# 工作日 04:30 —— 收件人在东京的本地时间
200 OK · cron.containers.hoody.com
GET · echo
HTTP/1.1 200 OK// 条目带着新的 schedule 和 next_run 一起返回{"id": "0a3c8","schedule": "30 4 * * 1-5","next_run": "2026-05-05T04:30:00+09:00","enabled": true}

PATCH 只携带变化的那个字段。服务把它合并进现有条目,重新计算 next_run,并把那行重新注入系统 crontab。无 SSH 会话、无跳板机、无笔记本。

从广播到登机口,只需三个动作

整个编辑塞在登机广播和优先登机队列之间。打开 URL。改字段。走向飞机。

OPEN

打开 crontab URL

cron 服务有自己的 URL —— cron.containers.hoody.com/users/me/crontab。同一个页面在任何浏览器里都能打开,包括你手机上的浏览器。鉴权就是 URL。无堡垒机、无 AnyConnect 提示、无笔记本上密钥的仪式。

EDIT

点一行,改一个字段

每条受管理条目是一个 JSON 对象,带 schedule、command、comment、enabled。你点那一行,schedule 字段进入可编辑状态,你把 0 7 * * * 替换成 30 4 * * 1-5。其他字段毫发无损。

SAVE

PATCH 落地,走向登机口

保存触发对 /users/me/entries/[id] 的 PATCH。响应是 200 OK,并返回新的 next_run。系统 crontab 在一秒内被更新。你关掉标签页继续走。

手机能命中的四条路由

Hoody Cron 在 crontab 上暴露一个小的 CRUD。每条受管理条目都有 UUID;每条条目都可以被独立 patch。下面是手机用来编辑、静音、列出或删除任务的四个端点。

MANAGED ENTRIES · /users/me/entries
按用户隔离
  • GET/users/me/entries列出当前用户的受管理条目。每行携带 id、schedule、command、comment、enabled、next_run。
  • PATCH/users/me/entries/[id]部分更新。只发送你改过的字段。schedule、command、comment、enabled、expires_at 都可独立 patch。
  • POST/users/me/entries用 JSON 创建一条新的受管理条目。接受标准 5 字段调度加宏(@hourly、@daily、@weekly、@monthly、@yearly)。
  • DELETE/users/me/entries/[id]删除一条条目。服务在不带它的情况下重新注入系统 crontab。在机场的修改是错的、想暂时干掉这个任务时很有用。

端点以 Hoody Cron 服务为准。路径相对于 https://PROJECT-CONTAINER-cron-1.SERVER.containers.hoody.com。

手机编辑给你什么

对一个站在登机口、屏幕只有 6 寸的人来说,真正重要的数字。

  1. FIELDS PATCHABLE5

    schedule、command、comment、enabled、expires_at。每一个都可以单独发送。其他字段保持不变,所以你昨天上午 9 点写下的注释能在机场编辑后保留。

  2. ROUND-TRIP

    手机一次 PATCH。一次 200 响应,带回新的 next_run。系统 crontab 在同一次调用里就被服务重新注入 —— 无第二次请求,无轮询。

  3. SHELL SESSIONS0

    无 SSH、无堡垒机、无 AnyConnect。crontab 是一个 URL,鉴权也是 URL。笔记本上的硬件密钥可以留在包里。

你的 crontab 是 URL,所以编辑它也是 URL。

当时间表能从浏览器到达,你恰好站在哪里就不再重要。登机口是一个不错的办公室。手机是一个不错的终端。PATCH 就是改动。

之前 · 只能用笔记本改ssh prod-bastion → sudo crontab -e开笔记本 · VPN · 跳板机 · vi
之后 · 一个 URLPATCH /users/me/entries/0a3c8点那一行 · 改字段 · 走向登机口
  • 无 SSH
  • 无笔记本
  • 下次触发就是现在
阅读 cron API

这取代了什么

其中很多东西之所以存在,只因为 crontab 不能从手机到达。当时间表是一个 URL,围绕到达时间表的那些仪式也随之消失。

  • 用笔记本 SSH第一个有用的按键之前要忍受二十分钟的摩擦
  • ssh-bastion access多一跳,带着自己的凭证和超时
  • “回家再弄”因为笔记本在另一个时区,延迟六小时
  • 在 PagerDuty 手动改 cron为两行调度修改而呼叫值班人来照看
  • 硬件密钥 + 堡垒机 + crontab 来回折腾为一个字段动用三个秘钥和一个 vi 会话
  • Slack-the-senior-engineer把另一个人吵醒,只为分享一个你自己已经有的 URL

你站在登机口,改了今晚任务的触发时间。

阅读 cron 文档

阅读其他内容