修正 CentOS 系统时钟

use*_*180 13 linux synchronization time centos6

使用时间 C 函数(自 Epoch 以来的秒数)显示,与具有正确时间的另一台服务器相比,我当前的 CentOS 6 服务器上的时间大约晚了 7 小时。如何更正系统时钟?我不认为这是漂移,因为我几周前刚刚设置了这个服务器,但它可能是。我设置了 ntpd 但它没有帮助,可能是因为时差太大。

Mic*_*ton 23

简单的答案是“手动设置日期”,您需要这样做,但是为了防止这种情况再次发生,您还应该做更多的事情。

  1. 确保系统时区配置处于正常状态。

    除非有非常充分的理由不这样做(例如软件兼容性问题),否则服务器时钟应始终在 UTC 时间运行。

    如果您决定不使用 UTC,请通过运行 来选择一个时区tzselect。时区将打印在您将在下面使用的屏幕上。一个例子是Europe/Moscow。否则UTC用作下面的时区。

    Here is that TZ value again, this time on standard output so that you
    can use the /usr/bin/tzselect command in shell scripts:
    Europe/Moscow
    
    Run Code Online (Sandbox Code Playgroud)

    通过以下步骤将系统时钟设置为您想要的时区:

    1. 将 的内容替换/etc/sysconfig/clock为以下内容:

      ZONE="<timezone>"
      UTC=true
      
      Run Code Online (Sandbox Code Playgroud)

      例如:

      ZONE="Europe/Moscow"
      UTC=true
      
      Run Code Online (Sandbox Code Playgroud)

      请注意UTC=true,即使您不使用 UTC 作为时区,也应在此处设置。这是指服务器的硬件时钟,无论您选择的系统时区如何,它都应始终为 UTC。

    2. /etc/localtime指向所选时区的链接替换文件:

      # ln -snf /usr/share/zoneinfo/<timezone> /etc/localtime
      
      Run Code Online (Sandbox Code Playgroud)

      例如:

      # ln -snf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
      # ln -snf /usr/share/zoneinfo/UTC /etc/localtime
      
      Run Code Online (Sandbox Code Playgroud)
  2. 手动将时钟设置为当前时间。

    1. 将系统时钟同步到当前时间:

      # ntpd -g -q
      
      Run Code Online (Sandbox Code Playgroud)
    2. 检查时间是否正确:

      # date
      
      Run Code Online (Sandbox Code Playgroud)
    3. 将服务器的硬件时钟与系统时钟同步:

      # hwclock -wu
      
      Run Code Online (Sandbox Code Playgroud)
  3. 重新启动计算机。重新启动是必要的,因为必须重新启动所有系统服务以获取更正的时间和时区,并且需要测试服务器的硬件时钟(例如,电池故障)。

    重启后,检查系统显示的时间是否正确,ntpd 是否正常运行。