我在缺乏电池支持的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.local
sudo
从上述命令中删除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