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 会发送失败告警。
可以手动触发定时任务吗? +
可以。每个任务在仪表盘中都有"立即运行"按钮。适用于测试新任务或重新运行失败的执行,无需等待下次计划时间。