hello大家好😊
chronyd
对于在多个系统间分析日志文件而言,正确同步时间至关重要。网络时间协议(NTP)是计算机用于通过互联网提供并获取正确时间信息的一种标准方法。计算机可以与互联网上的公共NTP服务器时间源同步,也可以通过高质量硬件时钟为本地客户端提供准确时间。
硬件时钟,也称为实时时钟(RTC,Real-Time Clock),是计算机系统中的一个硬件组件,用于持续跟踪时间,即使计算机关闭或断电。
硬件时钟通常采用晶振或其他精准的时钟源来生成一个稳定的时钟信号,以测量时间的流逝。这个时钟信号被用来追踪日期和时间,不仅仅是在计算机开机和运行的时候,还包括计算机关机或断电的时候。
硬件时钟的作用是在计算机启动时提供一个初始的时间基准,使操作系统能够开始跟踪时间。在计算机开机时,操作系统会读取硬件时钟的值,并将其作为初始时间。然后,操作系统会继续跟踪时间,使用定时器等机制来保持时间的准确性。当系统关机或重启时,操作系统通常会将当前的系统时间写入硬件时钟,以便下次启动时有一个准确的时间基准。
chronyd 是一个时间同步守护进程,它主要用于同步系统时间。具体来说,它可以执行以下两个主要任务:
- 同步系统时间:chronyd 使用网络时间协议(NTP)与外部的 NTP 服务器通信,从而同步系统时间。它会周期性地与 NTP
服务器进行通信,以确保系统时间保持准确和同步。通过与 NTP 服务器进行通信,chronyd
可以调整系统时间,使其与全球标准时间保持一致。 - 管理硬件时钟(RTC):尽管 chronyd
的主要任务是同步系统时间,但它也可以在系统关机或重启时,将当前系统时间写入硬件时钟(RTC)。这个操作确保在下次启动时,硬件时钟提供一个准确的时间基准,以便系统可以从这个时间基准开始同步。
总结起来,chronyd 主要用于同步系统时间,而不是直接同步硬件时钟(RTC)。它通过与 NTP 服务器通信,调整系统时间,以保持系统的准确性和同步性。然后,在关机或重启时,它可以将当前系统时间写入硬件时钟,以确保下次启动时有一个准确的时间基准
更改服务器上的时区
timedatectl
是一个用于管理系统时间和日期设置的命令行工具。它可以显示当前系统的时间、日期、时区等信息。也可以使用这个命令进行相关的时间配置。
示例:
- Local time: 显示当前本地时间
- Universal time: 显示当前的协调世界时(UTC)
- RTC time: 显示硬件时钟(实时时钟)的时间
- Time zone: 显示当前设置的时区。在本例中是中国上海,它对应于中国的标准时间(CST,China Standard Time)
- System clock synchronized:这个属性表示系统时钟是否已经同步。如果它显示为 “yes”,则表示系统时钟已经同步,与 NTP 服务器或其他时间源保持一致。如果显示为 “no”,则表示系统时钟可能尚未同步,或者存在时间偏差
- NTP service:这个属性表示是否启用了网络时间协议(NTP)服务。如果它显示为 “active”,则表示 NTP 服务处于活动状态,系统正在尝试与 NTP 服务器同步时间。如果显示为 “inactive”,则表示 NTP 服务未启用,系统不会自动与 NTP 服务器同步时间
- RTC in local TZ: 显示硬件时钟是否在本地时区(是或否)。在这个示例中,硬件时钟不在本地时区
通过timedatectl list-timezones
可以查看系统提供的包含时区的数据库。
示例:
我们可以使用tzselect命令选择比较准确的时区名称。它会以交互的方式向用户提示关于系统位置的问题供用户选择,然后输出正确的时区名称。但它并不会对系统时区设置进行修改。
示例:
然后我们使用timedatectl set-timezone
命令将本地客户端的时区更新为前面显示的那个时区。注意需要root权限,然后使用timedatectl
验证是否更新成功。
示例:
配置服务器,使其时间与NTP时间源同步
首先,如果你没有启动chronyd服务的话,需要先启动服务。我们使用 systemctl start chronyd
命令立即启动它。如果你想要让服务在系统启动时自动启动,使用 systemctl enable chronyd
,但是注意这个命令并不会立即启动服务。
然后,编辑 /etc/chrony.conf 文件,将指定服务器作为NTP时间源。
比如下面的示例中,将classroom.example.com服务器指定为NTP时间源,iburst选项会在服务启动后再很短时间内进行初始时间同步
接着使用 systemctl restart chronyd
重新启动chronyd守护进程,让它加载新的配置。
最后使用chronyc sources -v
检查。
示例:
注意前面的输出中,classroom.example.comNTP时间源的源状态(S)字段中显示了一个星号(*)。星号表示本地系统时间与NTP时间源成功同步。
也可以使用 timedatectl
命令验证本地服务器当前是否启用了时间同步
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞