Pro 和 Business 功能

调度一切,安心无忧

HTTP 调用、Shell 命令、Docker exec -- 全部按 cron 计划运行,带完整输出历史、超时、重试和告警。不再有静默失败。

可以调度什么?

HTTP 端点、Shell 命令和容器 exec -- 支持时区和应用级范围。

HTTP 端点
按计划调用任何 URL -- Webhook、API、健康检查
Shell 命令
在应用容器内运行任何 shell 命令
Docker exec
在服务器上任何运行中的容器内执行命令
应用级任务
将定时任务绑定到特定应用进行范围化执行
独立任务
独立于任何应用运行的全局任务
时区支持
支持任意时区调度 -- UTC、America/New_York、Europe/Paris 等

工作原理

01

定义任务

选择要运行的内容:对任意端点的 HTTP 调用、Shell 命令或对特定容器的 docker exec。

02

设置 cron 表达式

使用标准 cron 语法(例如 */5 * * * * 表示每 5 分钟)或从预设中选择,如每小时、每天、每周。

03

配置超时和重试

设置最大执行时间以及 sh0 在放弃并告警前的重试次数。

04

sh0 按计划运行

内置调度器按计划触发任务,捕获所有输出,记录结果,出现问题时告警通知。

执行流水线

Cron 调度器
任务队列
执行(HTTP/Shell/Docker)
捕获输出
记录结果
失败告警

内置调度器 -- 无需系统 crontab,无外部依赖

一应俱全

完整 cron 表达式

标准 5 字段 cron 语法,支持常用调度预设。从每分钟到每年一次 -- 满足您的需求。

含 stdout/stderr 的执行历史

每次运行都记录完整输出、退出码、耗时和时间戳。无需 SSH 即可调试故障。

可配置超时

为每个任务设置最大执行时间。超过限制时,sh0 终止进程并标记为超时。

失败重试

配置自动重试并自定义尝试间隔。防止瞬态故障变成事故。

应用级或独立任务

将任务绑定到特定应用(在其容器内运行)或创建独立于主机运行的全局任务。

失败告警

当任务失败时通过 Slack、Discord、Telegram、邮件或 Webhook 获取通知。不再有凌晨 3 点的静默 cron 故障。

传统方式

  • x 通过 SSH 编辑 crontab
  • x 没有执行日志
  • x 静默失败
  • x 没有超时处理
  • x 一台服务器 = 一个 crontab
  • x 手动检查日志

sh0 的方式

  • 仪表盘中的可视化 cron 编辑器
  • 完整的 stdout/stderr 历史
  • 即时失败告警
  • 可配置超时
  • 应用级或全局任务
  • 仪表盘显示所有运行记录

常见问题

支持哪些 cron 表达式? +
标准 5 字段 cron 表达式(分钟、小时、日、月、星期)。支持通配符、范围、步进和列表。还支持 @hourly、@daily 和 @weekly 等常用预设。
可以查看定时任务的输出吗? +
可以。每次执行都会捕获完整的 stdout 和 stderr。您可以直接在仪表盘中查看输出,按状态(成功、失败、超时)筛选,并搜索执行历史。
任务超时会怎样? +
sh0 向进程发送 SIGTERM,短暂等待后如有需要发送 SIGKILL。该次执行在历史记录中标记为"超时"。如果配置了重试,下一次尝试将在配置的延迟后开始。
可以在特定容器内运行任务吗? +
可以。应用级任务通过 docker exec 在应用的运行容器内执行。这意味着任务可以访问与应用相同的环境、依赖和文件系统。
有重试机制吗? +
可以。每个任务可配置 1 到 10 次重试,并可自定义尝试间隔(如 30 秒、5 分钟)。如果所有重试都失败,sh0 会发送失败告警。
可以手动触发定时任务吗? +
可以。每个任务在仪表盘中都有"立即运行"按钮。适用于测试新任务或重新运行失败的执行,无需等待下次计划时间。

不再错过任何定时任务

带历史记录、超时、重试和告警的定时任务。不再有静默失败。