如何通过互联网设置时间和日期?


35

如何从互联网上检索日期并通过命令行设置计算机的时钟?


3
我不明白选票。简单的问题是什么使社区变得强大。例如,查看此内容
Mohsen

3
当我用鼠标悬停在问题的向下箭头上方时,我看到:“此问题未显示任何研究成果;尚不清楚或没有用”。我很想根据第一个(没有表明您找到了什么),第二个(没有表明您正在使用的特定平台以及为什么必须使用命令行(而不是通常的时间守护程序))来拒绝您的问题)第三个(默认情况下,大多数* nix用户将安装一些时间守护程序)。
Anthon 2013年

+1我也不明白反对票,仅仅是因为这是我之前困扰过很多次的事情,而且似乎无法找到关于这个特定主题的任何简明有用的东西。
l0b0

@Mohsen我没有投票,但是与您链接的问题的区别是,switchruby中没有红宝石,您可以通过date -s(如联机帮助页中所示)直接设置日期,或使用下面描述的任何命令...
Ulrich Dangel 2013年

1
@Anthon我不同意:这个问题是关于与BusyBox的一个小装置,这并不一定适用,使普通的通知“使用NTP”
吉尔“SO-停止作恶”

Answers:


29

您可以使用 :

sudo dpkg-reconfigure tzdata

用于配置您的时区。

要从互联网更新时间和日期,请使用以下方法:

安装

如果未安装ntpd,请使用以下任一命令来安装ntpd:

  • 对于基于RPM的:

    yum install ntp 
    
  • 对于基于Debian的用户:

    sudo apt-get install ntp
    

组态

您至少应在/etc/ntp.conf配置文件中设置以下参数:server

例如,使用vi文本编辑器打开/etc/ntp.conf文件:

  # vi /etc/ntp.conf

找到服务器参数,并将其设置如下:

  server pool.ntp.org

保存文件并重新启动ntpd服务:

  # /etc/init.d/ntpd start

您可以使用以下命令立即将系统时钟同步到NTP服务器:

  # ntpdate pool.ntp.org

*要手动设置时间和日期,请使用以下语法:

 date --set="STRING"

例如,将新数据设置为2006年10月2日18:00:00,以root用户身份键入以下命令:

# date -s "2 OCT 2006 18:00:00"

要么

# date --set="2 OCT 2006 18:00:00"

您还可以使用以下语法简化格式:

# date +%Y%m%d -s "20081128"

要设置时间,请使用以下语法:

# date +%T -s "10:13:13"

哪里,

10:小时(hh)13:分钟(mm)13:秒(ss)

使用等于AM或PM的%p语言环境,输入:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"

虽然最新的信息似乎都有效,它并不需要要求from the internet标题的OP的考虑任何地方。
Anthon 2013年

我相信tzdata(时区数据)包仅同步来自Internet的数据。如果我错了,请纠正我。
tusharmakkar13年

3
tzdata是有关时区和夏时制(开始,结束,纪元)的信息,而不是实际的日期和时间。当然,根据对时区和UTC时间的了解来知道如何到达本地时间是很方便的,但是您仍然需要从互联网上检索当地时间。
Anthon 2013年

你错了。时区数据必须进行更新(因为随时都有变化),但它不会自动从Internet更新,也不会从互联网设置时间。
Ulrich Dangel 2013年

@Anthon:我已经相应地编辑了答案。谢谢。
tusharmakkar13年

23

我发现有一个小代码可以更新您的时间,以防您不想安装任何东西来更新日期。:)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

1
google.in用来获取所在时区(INDIA)的当前时间。
Dilawar

请注意尾随Z表示时间是在zulu时区中给出的,因此,如果计算机时区设置正确,则不需要特殊的时区操作。
user202729'9

9

我用这个:

sudo ntpd -qg; sudo hwclock -w

首先告诉ntpd设置时间,然后再使用-q停止。另外,如果您的时钟发生大错误,我们需要告诉ntpd在这种情况下也要使用-g进行调整。最后,使用hwclock -w重新引导时将时钟写入硬件以保留更改(-w用于将hardwareclock设置为当前系统时间,这是有区别的)。


1
我倾向于使用“ &&”而不是分号来执行此操作,因此,如果第一个命令失败(例如,网络连接断开),则第二个命令将短路
Theophrastus


5

一些发行是航运RDATE用于这一目的。基本用法:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org

比ntp更好,更轻松的方式
andrewtweber 2016年

pool.ntp.org现在拒绝来自的连接rdatetime.nist.gov作品。同样,一旦设置了系统时间,还应该通过运行hwclock -w将其设置为系统时间来设置硬件时钟。然后,您可以通过运行hwclock -r
MatthewLee '17

5

经过研究,我最终得出了结论。我也将其应用于我自己的服务器:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

如果最后一个命令显示了有效的服务器列表,则可以使用。该命令将运行一组非常复杂的算法,这些算法将迭代您的时钟漂移,并对它们进行补偿。即使失去与NTP服务器的连接,您也将获得一个非常准确的时钟。但是,该命令确实需要几分钟才能开始。

资料来源:这里这里


0

要查找“对等”(可以查询的主机),可以使用ntpq -p

如果您已经在运行NTP服务,则必须在手动更新(例如使用)之前将其停止sudo service ntp stop

现在,您可以查询对等对象,例如使用sudo ntpdate "peer"


0

按照manatwork的答案中的建议使用rdate工具,但在以下位置使用SNTP协议和IPv4 选项:-n-4

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

该工具可以通过以下方式安装在Debian上:

sudo apt-get install rdate

0

除了Tushar的回复外,我还必须apt-get install ntpdate在Ubuntu 14.04上进行操作。

由于声誉不足以发表评论,因此发布为答案。


0

我也一直在寻找一种定期重新设置时钟的非ntp / ntpd方法。我喜欢google.com标头解析,但发现它不适用于ubuntu。我认为这在Raspberry Pi上也可以使用。

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

也可以使用curl代替wget。

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

使用蜂窝网络在PI上进行了测试,结果相似:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

请注意,我使用主机将google.com解析为IP地址,因此在使用iptables的此命令期间,我只能打开该IP。

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.