Cron 条目已经存在,例行工作还在正常完成吗?
补丁窗口和证书更新很容易被遗忘。凭据变化或主机不可达,都可能让原本正常的作业失败。仅有定时器并不能告诉团队执行了什么,以及哪些内容需要处理。
将计划与结果保存在一起. 为已保存的任务模板设置计划,检查下次运行,并从历史中打开每次执行。触发时间与实际工作始终可以一起查看。
安排作业并跟踪每次运行
选择任务模板,设置重复间隔或 cron 表达式,并在保存前检查下次运行时间。
查看已安排的工作、调整时间,或禁用作业,而无需删除可重用的模板。
查看每次执行、开始时间和结果,无需从各个 cron 主机分别收集输出。
打开任务日志和执行详情,排查某次失败。
让定期工作成为团队日常流程的一部分
让日常自动化更可预测
为已测试的作业设置计划
计划任务只为现有任务模板添加触发时间。仓库、Playbook 或脚本、目标配置、凭据引用及允许的输入仍由模板保存。实际操作时,这个顺序很重要:先手动运行并查看输出,再为同一定义设置执行频率。之后修改模板会影响所有未来的触发,因此应像审查其执行的代码一样审查模板变更。
补丁、证书更新和备份检查
这些作业往往会悄然停止工作。将计划关联到经过测试的 Ansible 补丁 Playbook、TLS 更新脚本或备份验证检查,就能将执行频率纳入项目,而不只保存在某个工程师的 crontab 中。Semaphore 启动操作并记录结果,但 Playbook 或脚本仍负责验证变更,并在未成功时以非零退出码结束。将这些失败发送到团队关注的渠道,让遗漏的更新能在证书到期前被发现。
Cron 表达式、预设和服务器时区
选择预设间隔,或编写标准五字段 cron 表达式。编辑器在表达式旁显示配置的计划时区,并同时预览该时区和浏览器本地时间下的下次运行,以便快速发现表达式与预期不符。管理员在服务器级设置计划时区,默认为 UTC,没有每个计划独立的时区选择器。如果所选时区采用夏令时,请在依赖维护窗口之前检查时钟切换前后的预期执行时间。
提供定时运行所需的值
计划任务可通过模板开放的提示项传入参数,例如分支、Ansible 主机限制或问卷字段。在启用定时执行前,先决定哪些值可以变化,手动测试对应组合,再将其保存在计划中。开放的输入范围应保持最小:不能让计划任务扩大原本按较小范围审查的操作目标。
查找并排查失败的一次执行
每次触发都会成为普通任务,拥有独立的状态、开始时间、来源上下文和输出,因此排查应从实际发生的运行开始,而不是当前模板。诊断延迟时,请比较计划开始时间和实际开始时间。错过执行窗口不会自动重试或补执行,因此恢复需要明确决策:先查看原始输出,再启动新的运行,通常可采用更小的主机限制范围。
为无人值守运行选择告警
计划任务可以继承模板中配置的告警,也可以使用另一组项目告警。将无人值守任务的失败通知发送给负责例行运维的团队,同时为手动执行保留独立的告警选项。
安排一次性维护运行
对维护检查或临时环境清理等需在指定时间执行一次的操作,使用一次性计划。日常工作则保留重复 cron 计划。两种方式都会启动已保存任务模板,并留下常规执行记录以供查看。
文档与相关功能
FAQ
Semaphore 能为 Ansible、Terraform、OpenTofu 和脚本设置计划吗?
可以。Semaphore 计划启动现有任务模板,无论它执行的是 Ansible Playbook、Terraform 或 OpenTofu 配置,还是 Bash、Python、PowerShell 脚本。先在模板中配置仓库、凭据、目标和执行环境,再向计划添加时间与受支持的输入。每次触发都保留常规任务记录,而不是采用另一套定时脚本执行模型。
能使用 cron 表达式或预设间隔吗?
可以。Semaphore 提供常见计划预设,也支持标准五字段 cron 表达式以设置更具体的时间。保存之前,使用下次运行预览确认表达式符合预期。计划启动现有任务模板,不会替换 Git 仓库中的 Playbook、Terraform 配置或脚本。如果重复运行会操作同一基础设施,应确保作业具有幂等性。
能为服务器补丁和 TLS 证书更新设置计划吗?
可以,前提是已为该操作准备经过测试的任务模板。例如,每周 Ansible 补丁 Playbook 或证书更新脚本都可由计划触发。Semaphore 决定启动时间并保留执行记录,而 Playbook 或脚本仍须执行更新、验证结果并准确报告失败。如果失败运行需要在下一个补丁窗口或证书到期之前处理,请添加通知。
计划使用哪个时区?
计划任务使用 Semaphore 服务器配置的时区,默认为 UTC。显示的时区和下次运行预览用于解释表达式,并非每个计划独立的时区设置。请将服务器时区与执行频率一起记录,尤其是工程师分布在多个地区时。如果使用夏令时时区,请在依赖维护窗口之前,检查时钟切换前后的预期执行时间。
计划任务能提供不同的分支、清单或主机限制吗?
计划任务可通过模板已启用的提示项传入受支持的任务参数。先决定哪些值可以变化,只开放相应输入。手动测试所需组合后,再保存计划中的覆盖值。可重用的执行配置仍保存在模板中。计划任务不应成为绕过操作输入设计或悄然扩大目标范围的途径。
定时操作执行时间超过间隔时会怎样?
定时工作使用常规任务执行模型及其并发和容量设置。定时器频繁触发,并不意味着可以安全地对同一目标进行重叠变更。应比较预期任务时长与间隔,并考虑在自动化本身加入锁定或幂等行为。在为资源密集型或破坏性操作采用较短间隔之前,请在实际部署中测试等待和重叠行为。
在哪里查看失败的定时运行?
打开项目任务历史,找到需要排查的执行。决定是否重跑之前,先检查状态、时间、来源上下文和工具输出。诊断延迟时,比较计划开始与实际开始时间。通知可将重要结果发送到配置的渠道,但详细执行记录仍保存在任务中。
计划任务包含自动重试和错过运行的补执行吗?
不要假定已安装版本具备文档未说明的重试、补执行或业务日历行为。计划任务定义何时启动操作;停机后的恢复是需要单独设计和测试的要求。请决定错过的备份或维护检查是延后执行、跳过,还是由工程师决定。选择取决于操作本身及其对目标环境的影响。
能按计划启动工作流吗?
当前的计划表单选择的是任务模板,而不是工作流。要按时启动完整工作流,可由外部调度器调用 Pro 工作流 API,或在 Semaphore 中计划执行一个调用该 API 的脚本任务模板。工作流随后遵循配置的依赖、审批及成功与失败路径,其进度记录为独立的工作流运行。请参阅工作流和工作流 API 文档。
