如何通过Linux中的命令行从Internet知道当前时间?


Answers:


30

如果您使用bash,则以下行将完成此工作

$ cat </dev/tcp/time.nist.gov/13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

它利用了bash shell的内置网络功能¹。如果使用POSIX shell或任何其他shell,则可以使用例如netcat。

$ nc time.nist.gov 13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

这两个命令都查询国家标准技术研究所 TCP端口13上的计时器服务器,并在stdout上输出接收到的数据。

¹ 编辑:Bash的手册页:猛砸专门处理多个文件名时,他们在重定向中使用,如下表所示:

/dev/tcp/host/port
如果host是有效的主机名或Internet地址,而port是整数端口号或 服务名,则bash尝试打开与相应套接字的TCP连接。

/dev/udp/host/port
如果host是有效的主机名或Internet地址,而port是整数端口号或 服务名,则bash尝试打开与相应套接字的UDP连接。


不错,+ 1。您可以扩展一下它的工作原理吗?还是因为我似乎在这里缺少大量的bash知识,所以给我起个名字来看看这种行为吗?</dev/tcp/格式是什么?
terdon

我看到的这种方法的两个小缺点是,不容易支持不同的时区,并且无法直接指定格式。为了解决这种情况,可以使用time api。例如,以一种更清晰易懂的方式查询中欧的实际时间,只需调用:curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
Moreaki 2014年

不知道time.nist.gov是否有任何速率限制或过载,但是我在此主机上得到了不同的结果。
Snowcrash

22

每个发行版都有几种NTP服务可用。

如果您想做一次Clocksync

date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"

将系统时间设置为硬件实时时钟

hwclock -r --utc
hwclock -w --utc
hwclock -r --utc

(注意:这恰好与Google配合使用,因为他们已经遍地开花了)


如果您只想查看Google最近的服务器发送什么时间:

date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"

17

ntpdate命令可以使用以下-q标志执行此操作:

$ ntpdate -q 1.debian.pool.ntp.org
server 88.191.120.99, stratum 3, offset -0.015076, delay 0.06604
server 88.191.235.218, stratum 2, offset -0.000676, delay 0.06592
server 188.165.240.21, stratum 3, offset 0.001191, delay 0.07005
server 91.121.34.166, stratum 2, offset 0.000565, delay 0.06998
22 Aug 00:56:21 ntpdate[31373]: adjust time server 88.191.235.218 offset -0.000676 sec

来自man ntpdate

   -q     Query only - don't set the clock.

0

您还可以通过HTTP使用HTP来获得Internet上的时间,该协议在许多系统上都可用,因为HTPhtpdate通常只能精确到秒,或者可以使用TLS来获得tlsdate更好的准确性:

tlsdate -nV google.com

另外,由于不推荐使用ntpdate,因此您可以使用sntp它(它是MacOS上默认安装的,并且是ntp发行版的一部分)来更准确地获取日期:

sntp pool.ntp.org 
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.