在 linux 系统中,时间同步分为两部分:系统时间(system time) 和 硬件时间(hardware time 或 rtc, real-time clock)。系统时间是 linux 内核维护的时间,主要用于运行时的任务调度和时间记录;硬件时间是 bios 或主板维护的时间,独立于操作系统,即使关机也能继续保持准确。
以下是同步时间的方法和硬件时间同步的具体步骤:
1. 同步系统时间:使用 ntp 或 chrony
系统时间通常通过网络时间协议(ntp)服务器来同步。
1.1 使用ntp工具同步时间
安装 ntp 服务
在 debian/ubuntu 系列:
sudo apt update sudo apt install ntp
在 centos/rhel 系列:
sudo yum install ntp
启动 ntp 服务
启动并设置为开机自启:
sudo systemctl start ntp sudo systemctl enable ntp
同步时间
手动同步时间:
sudo ntpdate pool.ntp.org
pool.ntp.org是全球公共 ntp 时间服务器。如果需要更精准的同步,可以选择离你位置较近的服务器。
1.2 使用chrony工具同步时间
chrony 是一个轻量级时间同步工具,适合在不稳定网络环境下使用。
安装 chrony
在 debian/ubuntu 系列:
sudo apt update sudo apt install chrony
在 centos/rhel 系列:
sudo yum install chrony
启动 chrony 服务
启动并设置为开机自启:
sudo systemctl start chronyd sudo systemctl enable chronyd
手动同步时间
强制立即同步系统时间:
sudo chronyc -a makestep
验证时间同步状态
检查时间源状态:
chronyc sources
1.3 使用timedatectl同步时间
timedatectl 是现代 linux 发行版中管理时间的工具,基于 systemd。
启用时间同步
检查时间同步状态:
timedatectl status
如果未启用 ntp 时间同步,使用以下命令启用:
sudo timedatectl set-ntp true
手动更新时间
如果需要手动立即同步时间,可以结合 ntpdate 使用:
sudo ntpdate pool.ntp.org
2. 硬件时间同步:系统时间与硬件时间的关系
2.1 硬件时间与系统时间的区别
- 系统时间(system time): 由操作系统维护的时间,通常通过 ntp 或本地用户手动设置。
- 硬件时间(hardware time 或 rtc): 由主板的硬件时钟维护,即使关机也能持续计时。
linux 系统启动时,会从硬件时间获取初始值,并将其加载为系统时间。正常运行时,系统时间与硬件时间可以独立运行,但需要定期同步以确保一致性。
2.2 查看硬件时间
使用 hwclock 查看硬件时间:
sudo hwclock --show
输出示例:
2025-11-20 15:45:32.213244+00:00
2.3 将系统时间同步到硬件时间
如果系统时间正确,但硬件时间不一致,可以将系统时间写入硬件时间:
sudo hwclock --systohc
- 效果: 将系统时间设置为硬件时间。
2.4 将硬件时间同步到系统时间
如果硬件时间正确,但系统时间不一致,可以将硬件时间加载为系统时间:
sudo hwclock --hctosys
- 效果: 根据硬件时间设置系统时间。
2.5 检查和设置硬件时间的时区
硬件时间可以设置为 utc(协调世界时) 或 本地时间(local time)。
查看当前硬件时间的时区设置:
timedatectl
输出示例:
rtc in local tz: no
yes表示硬件时钟使用本地时间。no表示硬件时钟使用 utc(推荐)。
如果需要更改硬件时间的时区设置(如设置为 utc):
sudo timedatectl set-local-rtc 0
3. 自动化时间同步
为了保持时间一致性,可以通过以下方式自动同步时间:
3.1 定时同步 ntp 时间
添加 ntpdate 到 cron 定时任务:
sudo crontab -e
添加以下内容:
0 * * * * /usr/sbin/ntpdate pool.ntp.org
- 每小时同步一次时间。
3.2 启用硬件时间与系统时间自动同步
确保系统时间与硬件时间一致,可以在系统启动时自动同步:
- 检查
/etc/adjtime文件是否存在并正常工作。 - 如果需要手动同步:
sudo hwclock --systohc
4. 常见问题与解决方法
4.1 时间不同步的原因
- ntp 服务未启动: 确保 ntp 或 chrony 服务已启用。
- 时区配置错误: 确保系统和硬件时钟的时区一致。
- 系统负载过高: 高负载可能导致时间漂移,需检查系统资源。
- cmos 电池耗尽: 如果硬件时间丢失,可能是 bios 电池耗尽,需更换。
4.2 强制同步时间失败
- 如果
ntpdate或chrony无法同步时间,检查防火墙是否阻止了 ntp 流量(默认使用 udp 123 端口)。 - 检查网络连通性:
ping pool.ntp.org
5. 总结
系统时间同步步骤:
- 使用 ntp 或 chrony 工具同步系统时间。
- 使用
timedatectl确保时间同步功能已启用。
硬件时间同步步骤:
查看硬件时间:
sudo hwclock --show
同步系统时间到硬件时间:
sudo hwclock --systohc
根据需要调整硬件时间的时区设置。
通过定期自动同步系统时间和硬件时间,可以确保 linux 系统时间的准确性和一致性。
以上就是linux同步系统时间和硬件时间同步的具体方法的详细内容,更多关于linux同步系统时间和硬件时间同步的资料请关注代码网其它相关文章!
发表评论