我在缺乏电池支持的RTC的基于ARM的嵌入式系统上运行Ubuntu。唤醒时间在1970年左右。因此,我使用NTP服务将时间更新为当前时间。
我在/etc/rc.local文件中添加了以下行:
sudo ntpdate -s time.nist.gov
但是,启动后,更新时间仍然需要几分钟,在此期间,我无法有效地使用tar和make。
如何在任何给定时间强制更新时钟?
更新1:以下命令(由于Eric和Stephan)在命令行中可以正常工作,但是在放入时无法更新时钟/etc/rc.local:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
我究竟做错了什么?
更新2:我尝试遵循针对第一次更新提出的一些建议,但是似乎并没有实际完成所需的工作。这是我尝试过的:
- 将服务器更换为
us.pool.ntp.org - 使用程序的显式路径
ntp完全删除服务,只留sudo ntpdate ...在rc.localsudo从上述命令中删除rc.local
使用上述方法,机器仍然从1970年开始。但是,一旦在命令行中登录(通过ssh)来执行此操作,则在我调用时,时钟就会更新ntpdate。
最后一件事,我所做的就是从删除rc.local和拨打电话到ntpdate我的.bashrc文件。这确实会按预期更新时钟,并且在命令提示符可用时,我会获得真实的当前时间。
但是,这意味着如果机器打开且没有用户登录,则时间永远不会更新。当然,我可以重新安装该ntp服务,以便至少在启动后的几分钟内更新时钟,但是随后我们回到了方格1。
那么,有没有理由为什么将ntpdate命令放入rc.local不能执行所需的任务而又能.bashrc正常工作呢?
sudo在/etc/rc.locale文件中使用..它们都已作为root运行。
timedatectl但askubuntu.com/questions/832646/...
ntpdate -s ntp.ubuntu.com[1]:askubuntu.com/a/81301/130162