Repository navigation
Run Shelf 1.6.0 增加排队补跑、运行优先级和任意时长超时,适合需要串行跑满长时间窗口的任务。
主要变化:
- 「上次未结束」新增「排队补跑」:到点时上一次还在运行,不再记为跳过,而是等它结束后立即补跑一次;期间多次触发合并为一次。手动运行不排队。
- 新增「优先级」:标准 / 后台。后台任务在电脑繁忙时让出 CPU,子进程一并继承。
- 超时预设扩展到 12 小时,并支持自定义小时和分钟;不在预设里的超时值不再被误显示为「不限制」。
- 脚本运行时可读取
RUNSHELF_TASK_ID、RUNSHELF_RUN_ID;设置了超时的任务还会得到RUNSHELF_TIMEOUT_AT(ISO 8601 截止时间),可据此提前收尾。 - CLI / TaskSpec 新增
concurrency(skip/queue/allow)和priority(standard/background)字段。
稳定性修复:
- 定时任务改由独立的运行宿主进程监管。调度进程崩溃、被 launchd 重启或升级重新注册时,正在运行的脚本不再变成孤儿或被误标为失效,结果照常记录。
- 失败通知改为写入通知收件箱、由 App 投递。此前调度进程在任务失败或超时时发通知会直接崩溃,连带中断其他长任务;App 未运行时通知会在下次打开后补发(保留 24 小时)。
runshelf run cancel在脚本尚未启动时只记录取消请求,不再误杀监管进程。
行为变化:
- 后台调度进程改为交互级进程类型。此前由调度器启动的所有任务都被系统压到低优先级,现在默认与前台应用同等获得 CPU;需要让出资源的任务请设为「后台」。
- 用
RUN_SHELF_APP_SUPPORT_DIR运行 App 时,不再注册、注销或修复后台调度,开发预览不会影响已安装的正式版。
校验:
scripts/check.sh通过。- 使用隔离任务目录完成运行配置区的实机 UI 检查。
- App 与发布产物通过签名、公证、staple 和完整性校验。