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

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

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

答案1

我发现一个小命令可以更新你的时间,以防你不想安装任何东西只是为了更新日期。 :)

sudo date -s "$(wget --method=HEAD -qSO- --max-redirect=0 google.com 2>&1 | sed -n 's/^ *Date: *//p')"

您可以date在实际设置时间之前检查是否正确理解该字符串,方法是运行

$ date -d "$(wget --method=HEAD -qSO- --max-redirect=0 google.com 2>&1 | sed -n 's/^ *Date: *//p')"
Mon Jan 10 11:40:46 AM CET 2022

wget命令可以替换为curl -Is --max-redirs 0 google.com.

请注意,使用它--method=HEAD是因为看起来GET响应可能会在响应是新鲜的时被缓存(使用旧的Date标头)HEAD

答案2

首先,如果您想更改时区,可以使用:

sudo dpkg-reconfigure tzdata

要在使用现代版本 systemd 的 Linux 发行版上从互联网更新时间和日期,您可以使用:

timedatectl set-ntp true

或者,您可以安装参考 NTP 实现,如下所述。


参考NTP实现

安装

如果ntpd未安装,请使用以下命令之一进行安装ntpd

  • 对于基于 RPM 的:
    yum install ntp 
    
  • 对于基于 Debian 的:
    sudo apt-get install ntp
    

配置

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

server <Time Server Name or IP Address>

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

# vi /etc/ntp.conf

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

server pool.ntp.org

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

# /etc/init.d/ntpd start

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

# ntpdate pool.ntp.org

手动设置日期

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

date --set="STRING"

例如,要将日期设置为2 Oct 2006 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:分钟(毫米)
  • 13:第二(SS)

您可以使用%p区域设置的 AM/PM 等效项:

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

答案3

我用这个:

sudo ntpd -qg; sudo hwclock -w

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

答案4

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

相关内容