情况描述:此处的系统指的是centos 7.6 。
由于项目情况变更需要,将服务器上的业务全部关停,重启服务器。但是,当服务器重启后,发现业务应用时间发生变化。经排查,服务器的硬件时钟和系统时钟不统一造成了业务应用时间错误。特此记录。
1、硬件时钟和系统时钟不统一。
linux系统分为硬件时钟和系统时钟。
硬件时钟是指服务器主板上的实时时钟(RTC),它在服务器断电的情况下依然可以运行。
系统时钟是指操作系统中运行的时钟。
当服务器重启时,系统时钟会从硬件时钟中读取时间。如果硬件时钟不正确,那么系统时钟必然也不正确。
解决方法:
查看系统时钟:date
查看具体时区:timedatectl
修改系统时钟:date -s ‘年-月-日 时:分’
例如:date -s '2024-03-21 21:42'
查看硬件时钟:hwclock
修改硬件时钟:hwclock --set --date= “月/日/年 时分秒”
系统时钟与硬件时钟同步: hwclock --systohc
例如:hwclock --set --date="03/22/2024 9:38:40"
2、时区不正确
时区不正确也会导致系统时间与实际时间差异很大。可以通过timedatectl查看,或者/etc/localtime/文件当汇总查看当前时区。
修改时区方法
修改时区:timedatectl set-timezone 实际时区
使用交互式选择时区:tzselect
根据提示选择具体时区,最后将选择的时区写入到/etc/localtime文件中,并同步时间文件。
写入:cp /usr/share/zoneinfo/$(tzselect) /etc/localtime
时间文件同步:nano /etc/timezone
在/etc/timezone中写入相应的时区。例如:America/New_York,wq保存退出
运行:dpkg-reconfigure -f noninteractive tzdata
设置/etc/localtime的链接:ln -sf /usr/share/zoneinfo/your_time_zone /etc/localtime
3、CMOS电池问题
如果服务器的CMOS电池电量不足。那么,就无法维持硬件时钟的正常运行。这时服务器重启后,硬件时钟就会不正确。
解决方法:使用专业工具进行拆卸更换CMOS电池