最近一直在搞大模型的相关工作,所以一直在用Linux服务器,前面的文章里也提到了,我用的是一台Dell PowerEdge R730xd。
但在使用中发现,IDRAC中的日志时间和本地时间存在时差,大概相关8小时。
对于技术人员,8小时这个时差还是相对比较敏感的,这就是UTC时间和CST时间的时差啊。
因为我们国内时区是东八区,所以和UTC相关8小时的时差。所以问题相必就在ubuntu-server的时区设置上。
1、查看当前时区
使用命令 timedatectl 查看当前时区和设置
可以看到 Local Time是采用的UTC, RTC time也是。其中和我们今天设置相关的就是这两项设置。
2、设置时区
命令: timedatectl set-timezone Asia/Shanghai
然后再查看当前时区
但是,经过上面修改后,你会发现某些位置,如某些日志的时间戳显示还是有问题,这就用到了另一个时钟了——RTC time(硬件时间)。
3、修改硬件时区
命令 timedatectl set-local-rtc yes
修改之后就会发现,有问题的时间戳显示正常了。
关于Local time和RTC time:
很多装到Windows和Mac双系统的朋友可能有印象,每次从Mac切换系统到Windows后,Windows的时间会变化,和当前时区的时间会相差几个小时(在国内一般是8个小时)。
其实原因也类似——macOS系统和Windows系统对时间的处理方式不同。macOS 把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的。Windows把系统硬件时间当作本地时间(Local Time),操作系统中显示的时间和 BIOS 中是一样的。
操作系统在同步时间的时候,同时会修改BIOS时间,因此导致Windows/macOS显示的时间不一致。
先看Linux几个时间的功能介绍:
Local time: Sun 2024-09-01 11:49:33 CST # 本地时间
Universal time: Sun 2024-09-01 03:49:33 UTC # 协调世界时间
RTC time: n/a # 硬件时间
Time zone: Etc/UTC (UTC, +0000) # 时区
Network time on: yes # NTP时间同步是否开启,yes表示是
NTP synchronized: yes # 如果和远程NTP服务器成功同步,显示为yes
RTC in local TZ: no # no表示硬件时钟设置为协调世界时(UTC),yes表示硬件时钟设置为本地时间
所以,和Mac/Windows时间问题差不多的思路,直接调整硬件时间,就能解决时间戳显示的问题了。