如何通过命令行从 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 服务器。