如何从 Internet 设置时间和日期?

Moh*_*sen 48 command-line remote date clock

如何从 Internet 检索日期并从命令行设置计算机的时钟?

小智 46

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

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

  • 我使用`google.in` 来获取我所在时区(印度)的当前时间。 (3认同)
  • 我会切换测试的顺序并在答案中设置代码示例,因为最好先测试。;-) 对我来说,我需要将剪切参数更改为 `-f4-10`,因此 `date -d "$(wget --method=HEAD -qSO- --max-redirect=0 google.com 2>&1 | grep 日期: | cut -d' ' -f4-10)"` (3认同)
  • 请注意尾随的“Z”表示时间以祖鲁时区给出,因此如果计算机时区设置正确,则不需要特殊的时区操作。 (2认同)

tus*_*r08 38

您可以使用 :

sudo dpkg-reconfigure tzdata
Run Code Online (Sandbox Code Playgroud)

用于配置您的时区。

要从 Internet 更新时间和日期,请使用以下命令:

安装

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

配置

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

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

  # vi /etc/ntp.conf
Run Code Online (Sandbox Code Playgroud)

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

  server pool.ntp.org
Run Code Online (Sandbox Code Playgroud)

保存文件并重启ntpd服务:

  # /etc/init.d/ntpd start
Run Code Online (Sandbox Code Playgroud)

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

  # ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)

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

 date --set="STRING"
Run Code Online (Sandbox Code Playgroud)

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

# date -s "2 OCT 2006 18:00:00"
Run Code Online (Sandbox Code Playgroud)

或者

# date --set="2 OCT 2006 18:00:00"
Run Code Online (Sandbox Code Playgroud)

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

# date +%Y%m%d -s "20081128"
Run Code Online (Sandbox Code Playgroud)

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

# date +%T -s "10:13:13"
Run Code Online (Sandbox Code Playgroud)

在哪里,

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

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

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

# date +%T%p -s "12:10:30PM"
Run Code Online (Sandbox Code Playgroud)

  • [tzdata](https://launchpad.net/ubuntu/+source/tzdata) 是有关时区和夏令时(开始、结束、纪元)的信息,而不是*实际*日期和时间。当然,根据您的时区和 UTC 时间的知识知道如何到达您的当地时间是很方便的,但您仍然需要从互联网上检索后者。 (3认同)

Sil*_*ker 13

我用这个:

sudo ntpd -qg; sudo hwclock -w
Run Code Online (Sandbox Code Playgroud)

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

  • 我倾向于用“&&”而不是分号来做到这一点,这样如果第一个命令失败(例如网络连接中断),第二个命令就会短路 (2认同)

Ign*_*ams 7

使用 ntpdate、ntpd 或 Chrony 连接到 NTP 服务器。


man*_*ork 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
Run Code Online (Sandbox Code Playgroud)


小智 5

经过一番研究,我最终得到了这个。我也把它应用到我自己的服务器上:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p
Run Code Online (Sandbox Code Playgroud)

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

来源:这里这里