如何在Mavericks下保持系统时钟同步?


22

我有一个运行Mavericks(10.9.1)的2011年中期iMac。我在今年秋天发布Mavericks时从Mountain Lion进行了更新。我的系统时钟以前从未遇到过任何问题。

自从安装Mavericks以来,我的时钟每天持续稳定增长约20秒。我的时区设置正确,并且在“日期和时间”系统偏好设置中选中了“自动设置日期和时间”。设置为使用“ Apple / Americas / US(time.apple.com)”

当我打开“日期和时间系统偏好设置”窗格时,我的时钟会立即调整为正确的时间,但是如果不打开该窗格,它将很快偏离轨道。

我已经重新启动,选中并取消选中了自动设置日期和时间的框,但似乎都没有帮助。

有解决方案或想法吗?


更新:

我取得了进步。问题:如何知道我的Mac是否保持时钟正确更新?并且grgarside接受的答案提供了许多有用的疑难解答帮助。我的漂移值高达499.988(每天获得43.19秒)!

最重要的是,起搏器每5到15秒运行一次,正如我的主干日志所证明的那样,但是,每次运行都会出现错误:

Feb  1 11:53:29 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:53:39 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:53:51 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:53:59 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:54:09 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:54:19 jsw.local pacemaker[19928]: adjtime: Operation not permitted

似乎我有一个权限问题,但我无法解决。我已经通过launchctl卸载并重新加载了起搏器plsit

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.pacemaker.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.pacemaker.plist

这是我的com.apple.pacemaker.plist的文本导出

{
    Label = "com.apple.pacemaker";
    ProgramArguments = (
        "/usr/libexec/pacemaker",
        "-b",
        "-e",
        "0.0001",
        "-a",
        10,
    );
    KeepAlive = {
        PathState = {
            "/private/var/db/ntp.drift" = YES;
        };
    };
}

我的/private/var/db/ntp.drift文件归root:wheel所有,其权限为644,/ System / Library / LaunchDaemons / com.apple.pacemaker.plist具有完全相同的所有权和权限。

我希望此更新提供足够的其他信息,以便有人可以帮助我解决此问题。


2
我从未像您描述的那样关闭系统,但是这里的另一个人需要选择其他时间服务器(如果您当前使用的是美国,则选择亚洲),然后再切换回原来的设置。
bmike

我想您的DNS或主机文件有问题。您是否以任何方式修改了网络设置和首选项?不仅低于10.9,还低于10.8?我会尝试从time.apple.com更改为pool.ntp.org/en的URL之一。
Andrew U.

1
@AndrewU。您的评论无法解释这样的事实,即当我打开首选窗格时,时间显然可以正确同步
Scott

1
@bmike我正在尝试此操作,只是还没有回到iMac进行检查。谢谢你,斯科特
斯科特

1
我遇到了完全相同的问题-时钟每周漂移几分钟,但是当我打开“时钟偏好设置”面板时,会立即正确同步。我注意到,如果您通过sudo在命令行上运行起搏器,则可以消除“ adjtime:不允许操作”错误:sudo / usr / libexec / pacemaker -v但这并不是真正的解决方案,只是暗示可能会发生什么幕后的错误。
Brian Stormont 2014年

Answers:


22

这些在运行Mountain Lion的iMac上似乎可以正常工作:

0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org time.apple.com

只需将上面以空格分隔的行复制/粘贴到“日期和时间”偏好设置中的“自动设置日期和时间”字段中。记住在输入ntp服务器名称后按Enter键,以便更新ntp.conf。


我不明白为什么会这样,但是确实有用!
斯科特,

在优胜美地,它已经变成了一个下拉菜单,似乎并没有被编辑(即使有点像您可以对其进行编辑...):(
RedYeti 2015年

您仍然可以在优胜美地(我刚刚做过!)中进行编辑。如果选择下拉菜单并按Delete键,则文本将消失。您不能使用cmd + v进行粘贴,但是在菜单中单击鼠标右键可以提供粘贴选项。
Ryan Dlugosz 2015年

3

Maverisks的ntpd已损坏,粉碎,损坏。苹果对此深有体会:我花了几个小时给他们打电话,向他们提供了丰富的样品和文件。它可能是从iOS转移过来的(无论是否实际有效,都称为“ Back to the Mac”)。罪魁祸首似乎是带有Maverisks守护程序“ pacemaker”的新程序,该守护程序以经典的Apple方式进行了记录,并且似乎与现有的很少的记录相符。


这里对此进行了
冗长的

查看Bryan Christianson的ChronyControl(Bryan也在WhatRoute的后面)。使用Mojave v10.14.4,它使ntp计时恢复了一些理智。

2

在进行全新安装之前,强烈建议您尝试重置NVRAM(非易失性RAM)。

NVRAM(或旧的基于PowerPC的Mac上的PRAM)存储某些设置。这是一种内存,就像Mac上的常规RAM一样,但主要区别在于即使您的Mac关闭,NVRAM也会存储其中的内容。

具体来说,存储在NVRAM / PRAM中的信息包括:

  • 喇叭音量
  • 时区设置
  • 屏幕分辨率
  • 启动盘选择
  • 最近的内核恐慌(如果有)

可能是,您的NVRAM上存储的有关您时间的内容以某种方式被破坏,现在会导致您的问题。

现在,您可能会问,与服务器的时间同步如何?我需要什么呢?好吧,这只是为了设置您的时间,而不是您手动进行。只是一个小小的手势;而已。设置后,它会照常存储在您的NVRAM中。

每次打开“日期和时间首选项”时,您的时间都会得到纠正,因为在此打开可能会启动您的时间与服务器的手动同步。但是在那之后事情又变成了麻烦。

无论如何,为了重置您的NVRAM:

  • 关闭您的Mac。
  • 在键盘上找到以下键:命令(⌘) 选项P,和- [R 。您将需要在步骤4中同时按住这些键。
  • 打开电脑。
  • 在出现灰色屏幕之前,按住Command-Option-PR键。
  • 按住这些键,直到计算机重新启动,然后第二次听到启动声音。
  • 释放钥匙。

资料来源:苹果


1
我可以看到重置NVRAM会清除不正确的时区,但就其影响时间和ntpd保持时钟与互联网资源保持平衡的能力而言-NVRAM中存储的内容与时间设置之间存在很多缺失的联系。尤其是由于打开系统首选项窗格后系统失灵并在运行时自动更正。您是否在启动时就觉得麻烦了?
bmike

2

您可以ntpdate通过启动。

我在https://github.com/tjluoma/ntp-fix-time上将各个部分放在一起,但在这里将包括相关的内容:

  1. launchd进入/ Library / LaunchDaemons / 的plist(因为它需要在运行root时运行)

  2. 调用ntpdate -u $NTPHOST并记录其输出的Shell脚本。

出于某种原因,尝试ntpdate直接通过进行调用launchd对我来说不起作用,但是通过脚本进行调用似乎可以进行。

plist使用这样的:

    <key>RunAtLoad</key>
    <true/>

以确保它在Mac重新启动时运行。

这个:

    <key>StartInterval</key>
    <integer>14400</integer>

确保它每4小时运行一次,这似乎“足够了”。

除非没有,否则脚本将使用/etc/ntp.conf中列出的服务器,在这种情况下,它将使用time.apple.com

(有关的man页面ntpdate表明,它最终将从Mac OS X“退役”,但仍在10.9.1中存在,因此对我来说足够了。)


这看起来像是可行的-尽管令我感到困惑的是为什么有必要这样做以及是否有其他我不知道的系统问题。
斯科特

1
仅供参考-我不喜欢在LaunchDaemons或cron作业中依赖PATH变量。我已经被烧死了太多次,我认为使用完整路径是更好的做法。对于LaunchDaemons,可以指定一个WorkingDirectory,如果使用它,则无需指定完整路径。
斯科特

1

到目前为止,我在消除时钟漂移方面一直没有成功。因为我的时钟漂移缓慢(每天不到一分钟),所以需要一段时间才能查看尝试的解决方案是否有效。

我刚刚从这篇文章中尝试了Patrix答案的变体。回声在命令行上不起作用,我得到“权限被拒绝”(他的回答是指Lion安装)。但是我确实删除了旧文件,并用我用nano编辑的新文件替换了它。

sudo rm /etc/ntp.conf
sudo touch /etc/ntp.conf
sudo nano /etc/ntp.conf

在我简单放置的文件中

server time.apple.com

没有尾随。或换行。然后我退出了nano(ctrl-X)并回答“是”以保存更改。

我不需要更改所有者,因为它已经由root:wheel拥有。

我会在知道是否可行时更​​新。


1
这行不通
Scott

2
为什么在更改之前先触摸它?
Max Ried 2014年

0

我想为此提供两美分。我有一个类似的问题。我的时钟要晚一个小时,对我来说,起作用的是使用当前位置自动取消选中“设置时区”,而只是手动选择最近的城市。试试看它是否有帮助,这没有什么坏处。


0

正如其他地方所讨论的,时钟漂移是由于ntpd无法正常工作,以及/ usr / libexec / pacemaker之类的工作均无法正常工作。禁用起搏器并运行ntpdate来调整时钟,可以使系统上的时钟保持相对稳定,并且系统更改最少。

从终端,按顺序运行这些命令。

cd /System/Library/LaunchDaemons/
mv com.apple.pacemaker.plist com.apple.pacemaker.plist.OFF
sudo crontab -l > /tmp/foo
echo '*/5 * * * * /usr/sbin/ntpdate -s -B -u time.apple.com' >> /tmp/foo
sudo crontab /tmp/foo

然后重新启动系统。

前两个命令通过移开其启动的配置文件来禁用起搏器。最后三个命令告诉系统cron守护程序每五分钟运行一次ntpdate,根据需要减慢或加快时钟速度,并将其操作记录到/var/log/system.log中。


-2

如果您致电Apple,他们将建议您重新安装以保留操作系统。

我的猜测是您的偏好已损坏。您可以尝试将“日期和时间”首选项面板中的每个设置更改为其他设置,重新启动,然后将其设置为所需的设置。如果这不起作用,请进入“首选项”目录并删除与“首选项日期和时间”有关的所有首选项plist。


重新安装?恐怖!这就是为什么我几年前离开Windows的原因。与重新安装操作系统相比,聪明的人一定可以找到更好的解决方案。
斯科特

至于“转到首选项”,删除与日期和时间有关的文件。我发现该建议不完整且危险。如果您的建议很严重,则应A)提供文件夹的位置。B)建议用户将文件移到其他地方(也许在桌面上),而不要删除它们。许多具有不同经验水平的人都将阅读此问题。
斯科特

我发现您最近还没有致电Apple技术支持。重新安装OSX是一项非常轻松的操作。您所有的应用程序均保持安装状态,所有用户均在场。
vy32 2014年

昨天叫苹果。通话3小时。然后,重新安装OS 4小时(通过快速Internet到SSD)。然后2个小时调整由OS重新安装的配置文件(apache等)。毕竟-我的时钟仍然漂移。甚至没有一点痛苦,问题也没有解决。
斯科特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.