Skip to main content
Skip to content

热修补后待重启

热修补可以安装仅在重启后生效的更新。 在 你的 GitHub Enterprise Server 实例 重新启动之前,它会继续运行旧版本,这可能会导致不可预知的问题。

症状

安装热修补后,你可能会看到看似与升级无关的问题。

  • 之前可正常工作的功能在热修补后开始失效。
  • 该实例不稳定,且其不稳定现象不一致并难以重现。
  • 服务的行为出人意料,或未识别您所做的更改。

这些症状中没有任何内容指向升级,因此在进一步调查之前,值得先排查是否存在待处理的重启。

原因

热修补可以包括内核或核心系统包的更新。 正在运行的系统继续使用上次启动时加载的版本,因此这些更新在重启之前不会生效。

热修补升级脚本会告诉你何时需要重新启动,但它不会为你重启实例。 如果错过了该消息,或推迟重新启动,然后忘记它,则实例以混合状态运行,其中某些组件已更新,其他组件未更新。 在不重新启动的情况下安装更多热补丁会使情况更加严重。

确认问题

  1. 通过 SSH 连接到管理 shell。 有关详细信息,请参阅“访问管理 shell (SSH)”。

  2. 检查是否需要重新启动。 仅当系统需要重启时,任一文件才存在。

    ls /var/run/reboot-required /var/run/reboot-required.pkgs
    

    如果列出任一文件,则需要重新启动。 如果两者都不存在,则命令会对这两个路径都会报告 No such file or directory,这意味着没有挂起的重新启动,并且问题出在别处。

  3. 如果 /var/run/reboot-required.pkgs 存在,可以看到哪些包正在等待系统重启。

    cat /var/run/reboot-required.pkgs
    

解决问题

重新启动会使 你的 GitHub Enterprise Server 实例 不可用,因此请提前安排重启,而不是立即执行此操作。

警告

重新启动会中断正在使用该实例的所有用户。 启用维护模式会停止新工作开始,但它不会停止正在运行的工作,因此请等待活动进程在重新启动之前完成。

  1. 与用户安排维护时段。

  2. 启用维护模式,然后等待所有活动进程完成。 有关详细信息,请参阅“启用和排定维护模式”。

  3. 重新启动实例。

    sudo reboot
    
  4. 当实例恢复后,确认当前没有仍处于待处理状态的重启。 现在,这两个文件都应已消失,因此命令会对每个路径都报告 No such file or directory。 这就是所需的结果。

    ls /var/run/reboot-required /var/run/reboot-required.pkgs
    
  5. 禁用维护模式并确认原始问题已解决。

防止再次发生

  • 当热补丁提示需要重新启动时,请安排重启,并跟踪其直至完成。 你可以选择一个方便的时间,但应在条件允许时尽快重启,尤其是在热补丁包含安全修复的情况下。 有关详细信息,请参阅“使用热补丁升级”。
  • 当需要重启时,请勿连续安装多个热补丁,因为实例会进一步偏离更新所预期的状态。
  • 在升级后检查过程中检查挂起的重新启动,以便在用户发现之前先发现该问题。

联系 GitHub 支持

如果在重新启动后问题仍然存在,或者不确定这些步骤中的任何一项,请联系 GitHub 支持,不要继续操作。 有关详细信息,请参阅“创建支持工单”。

如果已打开支持工单,附加支持包有助于 GitHub 支持 更快地诊断问题。 有关详细信息,请参阅“向GitHub支持提供数据”。

延伸阅读