修复 Ubuntu 时间问题 - 排除计时故障
Ubuntu 显示错误的时间,并且随机设置不能长时间修复它。了解双时钟系统,阅读一个 timedatectl 屏幕,将您的模式与真正的原因相匹配 - 双启动、NTP、时区或耗尽的 CMOS 电池 - 并修复它。
📑章节
- 为什么 Ubuntu 显示错误的时间 - PC 内的两个时钟
- 在进行任何更改之前,请先阅读 timedatectl 屏幕
- 将您的模式与真正原因相匹配 - 双启动、NTP、时区或 CMOS 电池
- 打开互联网时间同步 (NTP) 并确认其正常工作
- 使用准确的区域名称正确设置时区
- 双启动:通过选择一个规则结束 Windows-Ubuntu 时钟之争
- 将正确的时间推回硬件时钟
- 当它确实是 CMOS 电池时 - 以及同步如何覆盖它
📋 概述和分步指南
两个时钟:找出哪个在说谎
每台计算机都将时间保存在两个地方。 RTC(实时时钟)是主板上的一个小型硬件时钟,当 PC 关闭时,它会依靠电池电源保持滴答作响。 系统时钟是Ubuntu在运行时向您显示的时钟,它由称为NTP的同步服务通过互联网进行校正。启动时,Ubuntu 读取 RTC 并从中构建系统时钟。
因此,错误的时钟意味着以下三种情况之一:RTC 持有错误的值,Ubuntu 以错误的假设读取它,或者互联网校正从未发生。大多数人犯的错误是修复钟面而不是修复原因。一个命令可以分离所有三个原因 - 这是下一步。
在更改任何内容之前阅读 timedatectl
打开终端并运行此命令。您不需要 sudo 只是为了查看:
timedatectl
出现七行;其中六个很重要。 本地时间是时区转换后钟面上的时间。 通用时间 是 UTC 中的同一时刻 - 这个数字本身必须正确。 RTC 时间 是主板上当前硬件时钟的时间。 时区是Ubuntu转换到的区域,例如亚洲/加尔各答(IST,+0530)。当互联网时间同步至少在启动一次后成功时,系统时钟已同步表示“是”。 本地 TZ 中的 RTC:否 意味着 Ubuntu 假定 RTC 持有 UTC - 这一行是整个双启动故事。
在健康的计算机上,RTC 时间与通用时间线匹配,同步线显示“是”,并且 NTP 服务显示活动。在更改任何内容之前写下屏幕显示的内容 - 阅读两分钟可以节省一个小时的随机修复时间。
将模式与真正原因相匹配
错误的时间并不是一个问题。错误的大小和形状几乎每次都会指出罪魁祸首:
您的区域偏移量是错误的(在印度为 5 小时 30 分钟),当您启动另一个操作系统时,它会翻转 - 双启动 RTC 战斗。 Windows 和 Ubuntu 对于硬件时钟的含义存在分歧。转到步骤 6。
几分钟内的错误,数周内缓慢增长 - 同步关闭或失败,或者 RTC 本身漂移。检查同步线路并执行步骤4。
电脑运行时正确,每次关机后再次错误 - RTC 在关机时丢失或误读时间。在旧硬件上是 CMOS 电池。转到步骤 7。
屏幕上的区域名称正确,但时间错误 - 区域是显示设置,而不是时间本身。你的世界时间线也会出错。转到步骤 5,然后重新检查。
仅在虚拟机内部错误,在恢复或恢复后跳转 - 虚拟机从其主机和快照中获取时间,而不仅仅是从 NTP 中获取时间。
打开互联网时间同步 (NTP)
如果允许运行同步,大多数单引导 Ubuntu 机器会自行修复。使用此命令将其打开(它会要求您输入密码):
timedatectl set-ntp true
更喜欢 GUI?打开设置,然后打开日期和时间,然后启用自动日期和时间。然后在工作的互联网连接上等待一分钟,然后再次运行 timedatectl。 系统时钟同步行现在应该显示是,并且时间应该步进到正确的值。
正确设置时区
如果区域本身是错误的,那么其他一切看起来都会损坏。首先在 timedatectl 输出的 Time zone 行中查看当前时区。区域名称区分大小写并使用斜杠,例如 Asia/Kolkata。列出确切的名称并设置您的名称:
timedatectl list-timezones
sudo timedatectl set-timezone Asia/Kolkata
再次运行 timedatectl 并确认本地时间行现在显示挂钟上的时间,区域显示为亚洲/加尔各答(IST,+0530)。之后仍然错误,显示了正确的区域?那么区域就不再是问题 - 返回到步骤 3 中的模式列表。
双启动:选择一个硬件时钟规则
在双引导机器上,您必须选择一种约定并使两个系统都一致。 Ubuntu 的默认设置是正常的:RTC 保存 UTC(本地 TZ 中的 RTC:否),每个操作系统都会进行转换以供显示。 Windows 默认情况相反:它将 RTC 视为本地时间。这种分歧就是为什么每个操作系统切换都会将您的时钟精确地按您的区域偏移量移动。
Ubuntu 端的快速妥协是这个命令 - Ubuntu 然后按照 Windows 期望的方式读取和写入 RTC:
timedatectl set-local-rtc 1 --adjust-system-clock
另一种方法是通过 RealTimeIsUniversal 注册表值教导 Windows 使用 UTC,而将 Ubuntu 保留为干净的默认值。无论您选择哪一边 - 只选择一侧。应用这两个修复会将错误翻转到相反的方向。
将正确的时间保存到硬件时钟
一旦系统时钟正确并同步,请将正确的值存储到 RTC 中,以便下一次冷启动正确启动:
sudo hwclock --systohc
sudo hwclock --show
第一个命令将系统时间复制到硬件时钟中;第二个显示硬件现在拥有的内容。然后完全关闭,等待一分钟,启动,并在网络连接之前检查时间(如果可以的话)- RTC 应该已经正确。
如果在完全断电后时间再次出现错误,则软件已尽其所能 - 怀疑 CMOS 电池或旧硬件上的 RTC 漂移。这也是你在电池电量不足的情况下不立即更换电池的方式:打开 NTP 同步(步骤 4),一旦网络连接,Ubuntu 会在每次启动后不久自行校正时钟。更换电池仍然是真正的硬件修复,但同步覆盖了日常使用。
timedatectl持续测量,而不是一次又一次手动设置时间;你每天校正的时钟是你还没有发现的故障。🏷️主题搜索变量和关键字
🎙️ 完整文字记录 — 点击展开
__TOK_39__
__TOK_40__
__TOK_41__
❓ 常见问题
本教程是 100% 免费学习的吗?
__TOK_42__
初学者可以遵循本指南吗?
__TOK_43__
如果遇到困难我可以在哪里提问?
__TOK_44__