Skip to content

计划任务

面向有计划任务配置、命令执行和历史读取权限的管理员。需要后端计划任务模块已启用并能访问游戏进程;每条任务由后端按自己的 Cron 注册。

目的

用可审计的 Cron 任务顺序执行控制台命令,区分只读检查和改变状态的操作,并在失败时从运行历史定位原因。

开始前

  • 确认账号可以创建、修改、手动执行和删除任务,并能读取运行历史。
  • 先确定每条任务的命令边界、游戏启动依赖、执行线程和并发策略。计划任务会按保存的字符串原样发送命令,不是脚本沙箱。
  • 为每条任务填写明确的时区;如果使用全局默认时区,也要记录该默认值和服务器本地时区的回退规则。
text
Read-only: help
Mutating: saveworld

操作步骤

任务

  1. 打开任务列表,先确认模块启用状态、任务的 EnabledCron 表达式TimeZoneId、上次状态和下一次运行时间。下一次时间是提示,不替代保存的 Cron 和时区。
  2. 新建或编辑 Console Commands 任务,填写唯一名称、描述、启用状态、Cron 和时区,并按顺序添加命令。一个任务中的命令共享执行选项并逐条执行。
  3. 把查询类命令(例如 help)与改变世界/玩家/配置的命令分开管理。只把账号和后端策略的 allow-list(允许列表)中的命令放入任务;saveworld、踢出玩家或设置命令等改变状态的操作必须先有维护窗口、备份和回滚方案。
  4. 按需要设置 ExecuteOnMainThreadRequireGameStartDoneCaptureOutputAllowConcurrentExecution。游戏未完成启动时,启用 RequireGameStartDone 的任务会持久化一条 Skipped 运行记录;关闭并发时,前一次仍在执行会让新的 Cron 重叠触发在执行前被抑制,可能不写入历史记录。
  5. 保存后用播放按钮手动执行一次。确认对话框中的任务名称和命令目标无误;删除任务前先查看历史并确认不再需要其审计记录。
计划任务列表的安全空状态

该图展示任务列表布局和创建入口;没有可安全展示的任务或下一次运行记录。

历史

  1. 按任务类型 ConsoleCommands、触发方式 Cron/Manual、成功状态和时间范围筛选,找到已写入历史的运行。关闭并发时,前一次运行仍在执行可能静默抑制新的 Cron 重叠触发,因此可能没有历史记录;此时确认任务仍启用且 Cron/时区配置正确,等待下一次符合条件的运行;回调被接纳后,再用可用的 LastRun 或历史记录核对结果。
  2. 打开详情,检查 StatusSummaryErrorMessage、捕获的输出、开始/结束时间、耗时、操作者和来源 IP。失败时逐条对应详情中的命令,不要只看任务列表的上次状态。
  3. 按以下顺序排查失败:任务和模块是否启用、Cron 是否有效、任务时区是否正确、游戏是否已启动、命令是否在允许边界内、是否被并发重叠抑制或启动门槛跳过、目标模块是否返回错误。
  4. 对改变状态的任务,再对照审计日志和游戏日志确认实际效果;Success 只证明任务执行链没有捕获错误,不代表业务结果一定符合预期。

设置

  1. 在设置中启用或停用整个计划任务模块。停用后不会注册任何任务。
  2. 设置 DefaultTimeZoneIdDefaultAllowConcurrentExecution。任务显式填写的时区优先;默认并发值只用于新建任务,不会覆盖已有任务。
  3. 设置 HistoryRetentionDays,并按需启用失败广播。失败消息可使用 {taskName}{error};不要把玩家隐私、令牌或内部路径放入广播模板。
  4. 保存后重新加载设置,并用一条只读任务验证默认时区、历史记录和失败通知配置。

验证结果

  • 任务列表显示启用状态、Cron、时区、上次状态和下一次运行时间;显式任务时区与设置页的默认时区区别清楚。
  • 一条只读任务产生 Success 历史记录并捕获预期输出;一条受控的改变状态任务产生对应审计记录并在维护窗口内完成。
  • 故意使用受控的无效命令后,历史出现 FailedErrorMessage 或详情能定位到具体命令;启用 RequireGameStartDone 且启动未完成时会持久化 Skipped 原因,并发冲突可能在执行前被静默抑制且不写入历史;确认任务仍启用、Cron 和时区配置正确,等待下一次符合条件的运行;回调被接纳后,用可用的 LastRun 或历史记录核对结果。

限制与安全说明

WARNING

计划任务会在后端进程中按顺序直接调用游戏控制台。全局 Permission/控制台策略和 allow-list(允许列表)是命令边界;任务列表本身不会把任意命令变成安全命令。ExecuteOnMainThread 可能占用游戏主线程,CaptureOutput 可能把命令输出写入历史。

DANGER

保存、踢出、封禁、发放物品、传送和配置修改等命令会改变线上状态。先用只读命令验证目标,再在维护窗口执行;命令参数中的玩家 ID、路径和凭据不得写入公开文档或广播。

  • 历史保留天数会自动清理旧记录。需要长期审计时导出记录,并在删除任务或备份前保留证据。

相关页面