Linux 时钟每周慢 10 分钟

Linux 时钟每周慢 10 分钟

我的一台 Linux 服务器的时钟几乎每周都会慢 10 分钟。我更新了时间,让它保持正确,虽然这并没有真正困扰我,但我还是想修复它。

我搜索了一下。crontab 中没有任何东西可以解决这个问题,我在日志中也找不到任何相关消息。有些人似乎使用 ntp 来解决此类问题,但我不想在上面使用不必要的组件。

Unname 结果:Linux unis-monitor 2.6.32-5-686 #1 SMP Mon Feb 25 01:04:36 UTC 2013 i686 GNU/Linux

猫讯息:

cat messages
Jul 14 06:25:06 unis-monitor rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
Jul 15 06:25:05 unis-monitor rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.

猫系统日志

cat syslog
Jul 15 06:25:05 unis-monitor rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
Jul 15 06:39:01 unis-monitor /USR/SBIN/CRON[15272]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
Jul 15 07:09:01 unis-monitor /USR/SBIN/CRON[15465]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
Jul 15 07:17:01 unis-monitor /USR/SBIN/CRON[15521]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 15 07:39:01 unis-monitor /USR/SBIN/CRON[15662]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
Jul 15 08:09:01 unis-monitor /USR/SBIN/CRON[15855]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
Jul 15 08:17:01 unis-monitor /USR/SBIN/CRON[15911]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 15 08:39:01 unis-monitor /USR/SBIN/CRON[16052]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
Jul 15 09:09:01 unis-monitor /USR/SBIN/CRON[16273]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)

那么,如果您知道在哪里查看或我可以使用什么来监控这些日期变化吗?

这里还有一些信息:该服务器是托管在 Win 2012 服务器上的 HyperV 上的虚拟服务器。不知道它是否会改变任何东西,看到托管的其他服务器没有这个问题……

答案1

HyperV 是一种疾病,神经氨酸酶是治愈方法。

在哪里查看或使用什么来监控这些日期变化?

您可以查询 NTPd 守护程序(通过ntpq客户端)以获取本地时钟和 NTPd 服务器参考时钟之间的差异。但这意味着实际运行 NTPd,因此您不是在单独监控更改,而是在监控正在运行的本地时钟和 NTPd 保持同步的综合效果。

我实际上不知道您是否可以配置 NTPd 来运行(并为您提供上述指标),但不实际调整系统时钟。另一种效率较低的方法是定期(cron?)ntpdate -q针对一组参考 NTPd 服务器运行并监视其输出,这将为您提供时钟与参考时钟之间的差异,而无需实际接触本地时钟。输出将如下所示:

$ ntpdate -q $YOUR_TLD.pool.ntp.org
[... list of queried servers ...]
17 Jul 12:14:11 ntpdate[42868]: adjust time server 109.168.106.59 offset -0.002517 sec

您可以过滤最后一个数字并绘制图表,以便清楚地了解时钟跳动的幅度和时间:

$ OFFSET=$( ntpdate -q $YOUR_TLD.pool.ntp.org | grep adjust | awk '{ print $10 }' )
$ echo $OFFSET
0.002970

答案2

网络时间协议 (NTP)并不是不必要的组件。

这是保持系统时钟根据原子时间源更新的唯一合理方法。

您应该安装 NTP,将其配置为使用本地池时间源,一切都会好起来。

答案3

在我的测试中我发现Hyper-V 虚拟机时钟非常不可靠并且经常会有超过 500ppm 的时钟漂移。这足以甚至导致 ntpd 失败。我不得不改用慢性的在这些虚拟机中提供合理准确的挂钟;在这种情况下,它的默认值为 1000ppm,并且可以进一步调整如果有必要的话。

对于计时特别重要的任何应用程序,我不再认真考虑使用 Hyper-V。

答案4

“问题”在于您运行的 Linux 版本不支持可插入时间源基础结构。有多个发行版支持它,但通常仅在其 64 位操作系统中支持,而在 32 位操作系统中不支持。

正如其他人提到的,Integration Services 允许时钟同步,但前提是支持 PTSI。大多数支持 PTSI 的发行版都已经拥有 HV 源。查看是否有adjtimex适用于您的发行版的端口/包。

如果无法让 PTSI 正常工作,使用 NTP 是一种有效的替代方法。还有一些黑客手段,包括命令tickadj和更改内核启动变量 - 这些应该避免。

相关内容