Linux同步系统时间和硬件时间同步的具体方法
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">1. 同步系统时间:使用 NTP 或 Chrony</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1.1 使用ntp工具同步时间</a></li><ul class="third_class_ul"><li><a href="#_label3_0_0_0">安装 NTP 服务</a></li><li><a href="#_label3_0_0_1">启动 NTP 服务</a></li><li><a href="#_label3_0_0_2">同步时间</a></li></ul><li><a href="#_lab2_0_1">1.2 使用chrony工具同步时间</a></li><ul class="third_class_ul"><li><a href="#_label3_0_1_3">安装 Chrony</a></li><li><a href="#_label3_0_1_4">启动 Chrony 服务</a></li><li><a href="#_label3_0_1_5">手动同步时间</a></li><li><a href="#_label3_0_1_6">验证时间同步状态</a></li></ul><li><a href="#_lab2_0_2">1.3 使用timedatectl同步时间</a></li><ul class="third_class_ul"><li><a href="#_label3_0_2_7">启用时间同步</a></li><li><a href="#_label3_0_2_8">手动更新时间</a></li></ul></ul><li><a href="#_label1">2. 硬件时间同步:系统时间与硬件时间的关系</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_3">2.1 硬件时间与系统时间的区别</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_1_4">2.2 查看硬件时间</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_1_5">2.3 将系统时间同步到硬件时间</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_1_6">2.4 将硬件时间同步到系统时间</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_1_7">2.5 检查和设置硬件时间的时区</a></li><ul class="third_class_ul"></ul></ul><li><a href="#_label2">3. 自动化时间同步</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_8">3.1 定时同步 NTP 时间</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_9">3.2 启用硬件时间与系统时间自动同步</a></li><ul class="third_class_ul"></ul></ul><li><a href="#_label3">4. 常见问题与解决方法</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_10">4.1 时间不同步的原因</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_3_11">4.2 强制同步时间失败</a></li><ul class="third_class_ul"></ul></ul><li><a href="#_label4">5. 总结</a></li><ul class="second_class_ul"><li><a href="#_lab2_4_12">系统时间同步步骤:</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_4_13">硬件时间同步步骤:</a></li><ul class="third_class_ul"></ul></ul></ul></div><p>在 Linux 系统中,时间同步分为两部分:<strong>系统时间(System Time)</strong> 和 <strong>硬件时间(Hardware Time 或 RTC, Real-Time Clock)</strong>。系统时间是 Linux 内核维护的时间,主要用于运行时的任务调度和时间记录;硬件时间是 BIOS 或主板维护的时间,独立于操作系统,即使关机也能继续保持准确。</p><p>以下是同步时间的方法和硬件时间同步的具体步骤:</p>
<p class="maodian"><a name="_label0"></a></p><h2>1. 同步系统时间:使用 NTP 或 Chrony</h2>
<p>系统时间通常通过网络时间协议(NTP)服务器来同步。</p>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1.1 使用ntp工具同步时间</h3>
<p class="maodian"><a name="_label3_0_0_0"></a></p><h4>安装 NTP 服务</h4>
<p>在 Debian/Ubuntu 系列:</p>
<div class="jb51code"><pre class="brush:bash;">sudo apt update
sudo apt install ntp</pre></div>
<p>在 CentOS/RHEL 系列:</p>
<div class="jb51code"><pre class="brush:bash;">sudo yum install ntp </pre></div>
<p class="maodian"><a name="_label3_0_0_1"></a></p><h4>启动 NTP 服务</h4>
<p>启动并设置为开机自启:</p>
<div class="jb51code"><pre class="brush:bash;">sudo systemctl start ntp
sudo systemctl enable ntp</pre></div>
<p class="maodian"><a name="_label3_0_0_2"></a></p><h4>同步时间</h4>
<p>手动同步时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo ntpdate pool.ntp.org
</pre></div>
<ul><li><code>pool.ntp.org</code> 是全球公共 NTP 时间服务器。如果需要更精准的同步,可以选择离你位置较近的服务器。</li></ul>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>1.2 使用chrony工具同步时间</h3>
<p><code>Chrony</code> 是一个轻量级时间同步工具,适合在不稳定网络环境下使用。</p>
<p class="maodian"><a name="_label3_0_1_3"></a></p><h4>安装 Chrony</h4>
<p>在 Debian/Ubuntu 系列:</p>
<div class="jb51code"><pre class="brush:bash;">sudo apt update
sudo apt install chrony</pre></div>
<p>在 CentOS/RHEL 系列:</p>
<div class="jb51code"><pre class="brush:bash;">sudo yum install chrony </pre></div>
<p class="maodian"><a name="_label3_0_1_4"></a></p><h4>启动 Chrony 服务</h4>
<p>启动并设置为开机自启:</p>
<div class="jb51code"><pre class="brush:bash;">sudo systemctl start chronyd
sudo systemctl enable chronyd</pre></div>
<p class="maodian"><a name="_label3_0_1_5"></a></p><h4>手动同步时间</h4>
<p>强制立即同步系统时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo chronyc -a makestep </pre></div>
<p class="maodian"><a name="_label3_0_1_6"></a></p><h4>验证时间同步状态</h4>
<p>检查时间源状态:</p>
<div class="jb51code"><pre class="brush:bash;">chronyc sources </pre></div>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>1.3 使用timedatectl同步时间</h3>
<p><code>timedatectl</code> 是现代 Linux 发行版中管理时间的工具,基于 <code>systemd</code>。</p>
<p class="maodian"><a name="_label3_0_2_7"></a></p><h4>启用时间同步</h4>
<p>检查时间同步状态:</p>
<div class="jb51code"><pre class="brush:bash;">timedatectl status </pre></div>
<p>如果未启用 NTP 时间同步,使用以下命令启用:</p>
<div class="jb51code"><pre class="brush:bash;">sudo timedatectl set-ntp true </pre></div>
<p class="maodian"><a name="_label3_0_2_8"></a></p><h4>手动更新时间</h4>
<p>如果需要手动立即同步时间,可以结合 <code>ntpdate</code> 使用:</p>
<div class="jb51code"><pre class="brush:bash;">sudo ntpdate pool.ntp.org </pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>2. 硬件时间同步:系统时间与硬件时间的关系</h2>
<p class="maodian"><a name="_lab2_1_3"></a></p><h3>2.1 硬件时间与系统时间的区别</h3>
<ul><li><strong>系统时间(System Time):</strong> 由操作系统维护的时间,通常通过 NTP 或本地用户手动设置。</li><li><strong>硬件时间(Hardware Time 或 RTC):</strong> 由主板的硬件时钟维护,即使关机也能持续计时。</li></ul>
<p>Linux 系统启动时,会从硬件时间获取初始值,并将其加载为系统时间。正常运行时,系统时间与硬件时间可以独立运行,但需要定期同步以确保一致性。</p>
<p class="maodian"><a name="_lab2_1_4"></a></p><h3>2.2 查看硬件时间</h3>
<p>使用 <code>hwclock</code> 查看硬件时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo hwclock --show </pre></div>
<p>输出示例:</p>
<pre><code>2025-11-20 15:45:32.213244+00:00
</code></pre>
<p class="maodian"><a name="_lab2_1_5"></a></p><h3>2.3 将系统时间同步到硬件时间</h3>
<p>如果系统时间正确,但硬件时间不一致,可以将系统时间写入硬件时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo hwclock --systohc </pre></div>
<ul><li><strong>效果:</strong> 将系统时间设置为硬件时间。</li></ul>
<p class="maodian"><a name="_lab2_1_6"></a></p><h3>2.4 将硬件时间同步到系统时间</h3>
<p>如果硬件时间正确,但系统时间不一致,可以将硬件时间加载为系统时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo hwclock --hctosys </pre></div>
<ul><li><strong>效果:</strong> 根据硬件时间设置系统时间。</li></ul>
<p class="maodian"><a name="_lab2_1_7"></a></p><h3>2.5 检查和设置硬件时间的时区</h3>
<p>硬件时间可以设置为 <strong>UTC(协调世界时)</strong> 或 <strong>本地时间(Local Time)</strong>。</p>
<p>查看当前硬件时间的时区设置:</p>
<div class="jb51code"><pre class="brush:bash;">timedatectl </pre></div>
<p>输出示例:</p>
<pre><code>RTC in local TZ: no
</code></pre>
<ul><li><code>yes</code> 表示硬件时钟使用本地时间。</li><li><code>no</code> 表示硬件时钟使用 UTC(推荐)。</li></ul>
<p>如果需要更改硬件时间的时区设置(如设置为 UTC):</p>
<div class="jb51code"><pre class="brush:bash;">sudo timedatectl set-local-rtc 0 </pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>3. 自动化时间同步</h2>
<p>为了保持时间一致性,可以通过以下方式自动同步时间:</p>
<p class="maodian"><a name="_lab2_2_8"></a></p><h3>3.1 定时同步 NTP 时间</h3>
<p>添加 <code>ntpdate</code> 到 Cron 定时任务:</p>
<div class="jb51code"><pre class="brush:bash;">sudo crontab -e </pre></div>
<p>添加以下内容:</p>
<div class="jb51code"><pre class="brush:bash;">0 * * * * /usr/sbin/ntpdate pool.ntp.org </pre></div>
<ul><li>每小时同步一次时间。</li></ul>
<p class="maodian"><a name="_lab2_2_9"></a></p><h3>3.2 启用硬件时间与系统时间自动同步</h3>
<p>确保系统时间与硬件时间一致,可以在系统启动时自动同步:</p>
<ul><li>检查 <code>/etc/adjtime</code> 文件是否存在并正常工作。</li><li>如果需要手动同步:</li></ul>
<div class="jb51code"><pre class="brush:bash;">sudo hwclock --systohc </pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>4. 常见问题与解决方法</h2>
<p class="maodian"><a name="_lab2_3_10"></a></p><h3>4.1 时间不同步的原因</h3>
<ul><li><strong>NTP 服务未启动:</strong> 确保 NTP 或 Chrony 服务已启用。</li><li><strong>时区配置错误:</strong> 确保系统和硬件时钟的时区一致。</li><li><strong>系统负载过高:</strong> 高负载可能导致时间漂移,需检查系统资源。</li><li><strong>CMOS 电池耗尽:</strong> 如果硬件时间丢失,可能是 BIOS 电池耗尽,需更换。</li></ul>
<p class="maodian"><a name="_lab2_3_11"></a></p><h3>4.2 强制同步时间失败</h3>
<ul><li>如果 <code>ntpdate</code> 或 <code>chrony</code> 无法同步时间,检查防火墙是否阻止了 NTP 流量(默认使用 UDP 123 端口)。</li><li>检查网络连通性:</li></ul>
<div class="jb51code"><pre class="brush:bash;">ping pool.ntp.org </pre></div>
<p class="maodian"><a name="_label4"></a></p><h2>5. 总结</h2>
<p class="maodian"><a name="_lab2_4_12"></a></p><h3>系统时间同步步骤:</h3>
<ol><li>使用 NTP 或 Chrony 工具同步系统时间。</li><li>使用 <code>timedatectl</code> 确保时间同步功能已启用。</li></ol>
<p class="maodian"><a name="_lab2_4_13"></a></p><h3>硬件时间同步步骤:</h3>
<p>查看硬件时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo hwclock --show </pre></div>
<p>同步系统时间到硬件时间:</p>
<div class="jb51code"><pre class="brush:bash;">sudo hwclock --systohc </pre></div>
<p>根据需要调整硬件时间的时区设置。</p>
<p>通过定期自动同步系统时间和硬件时间,可以确保 Linux 系统时间的准确性和一致性。</p>
<p>以上就是Linux同步系统时间和硬件时间同步的具体方法的详细内容,更多关于Linux同步系统时间和硬件时间同步的资料请关注琼殿技术社区其它相关文章!</p>
頁:
[1]