Linux date & ntp 小实验
时间:2016-03-13 03:12 来源:linux.it.net.cn 作者:IT
测试东西的时候发现服务器上的时间快了几十秒,尝试用 ntp 直接更新一下,结果没有成功,所以还是从头来过,先弄一下简单的理理。
思路
-
在 Linux 里面获取当前时间
-
在 Linux 里面手动设置时间
-
NTP 是啥?
-
如何用 NTP 来同步自己的时间
Linux 中的时间
date
在树莓派中来运行,首先是当前时间
$ date
Tue Mar 8 10:05:13 UTC 2016
此时的北京时间刚好是 18:05 ,毕竟我们是 +8 时区,上面显示的是 UTC 时间。
Mac 里面的如下,是 CST 时间
$ date
Tue Mar 8 18:07:04 CST 2016
除了显示时间, date 还能够把字符串中的时间按照指定的格式显示,以及设置时间。
其他的有关时间的获取
-
除了标准时间能不能获取时间戳?
-
怎么获取时区?
时间戳
$ date +%s
1457432423
时区
$ date +%Z
CST
原来 CST 是北京时间(China Standard Time)的意思,UTC 就是 协调世界时 。
设置时间
设置时间很简单,只要 -s, --set=STRING ,当然是需要管理员权限的。
后面的 STRING 比较自由。有用下面的格式:
$ sudo date -s '2016-03-08 11:58:04'
Tue Mar 8 11:58:04 UTC 2016
$ sudo date -s 'Tue Mar 8 11:55:03 UTC 2016'
Tue Mar 8 11:55:03 UTC 2016
$ sudo date -s '2016-03-08'
Tue Mar 8 00:00:00 UTC 2016
似乎还有更灵活的设置方式,不过还是用那种最朴实的吧。
附上一个显示时间的:
$ date +'%Y-%m-%d %H:%M:%S'
2016-03-08 12:01:41
NTP
这块有点麻烦,主要看了鸟哥的 NTP 時間伺服器 之后又做了些实验大概知道怎么回事了。
简单的设置时间
一般的给一个机器设置时间只要 ntpdate 命令就好了,另外的情况可能是需要自己搭 NTP 服务器来使一块机房的机器时间保持同步的时候才会使用吧,而且那个时间好像很慢的样子,现在先只简单的设置下时间就好,所以那些先不予考虑。
$ sudo ntpdate <server>
在这里找到了国内的 NTP Server: pool.ntp.org: NTP Servers in China, cn.pool.ntp.org
取一个拿来用 0.asia.pool.ntp.org ,这个域名对应的 IP 地址是不停变动的,为了实现更好的同步吧。
sudo ntpdate 0.asia.pool.ntp.org
这个命令执行完之后会直接把时间改掉。似乎那种 ntpd 的方式会渐进的调整时间,且会一直去同步时间,服务器上应该需要启动这个吧。
上面的命令在旁边的树莓派上是可用的,但是在远程的服务器上总是失败,错误如下:
$ sudo ntpdate 202.118.1.46
8 Mar 20:49:47 ntpdate[10113]: no server suitable for synchronization found
感觉是端口被封了,NTP 使用的是 123 Port。
用 ntp 来同步时间
在 $ sudo service ntp start 过后,就可以 ntpq -pn 来看状态,下面的结果说明端口被封了吧,reach 全都是 0。
$ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
123.108.200.124 .INIT. 16 u - 64 0 0.000 0.000 0.000
129.250.35.250 .INIT. 16 u - 64 0 0.000 0.000 0.000
212.26.18.41 .INIT. 16 u - 64 0 0.000 0.000 0.000
202.71.140.36 .INIT. 16 u - 64 0 0.000 0.000 0.000
91.189.89.199 .INIT. 16 u - 64 0 0.000 0.000 0.000
TroubleshootingNTP < Support < NTP
用 Mac 来 debug
好在 Mac 上也有 ntpd,参照: Setup an NTP Server in Mac OS X 10.8 – Philipp Klaus's Computing Blog 进行下面的:
-
关掉系统的同步自动时间同步
-
改了一下 /etc/ntp.conf 文件的配置,只简单加了几个 server 地址
-
sudo ntpd -d 这样居然就可以开始了,同时还可以 ntpq -p 查看些信息
-
再用 Wireshark 抓 UDP 的包,抓到了 NTP 的内容,如下图
可以看到这个 NTP 协议两端都是用 123 端口通信的,所以有防火墙的环境才比较容易失败吧。
暂且这样,之后再说。
参考
-
-
这里这篇关于时间的解决思路很多,很被坑的感觉 树莓派启动那些事(三) - elmagnifico's blog
扩展
-
设置 Linux 的时区
(责任编辑:IT)
测试东西的时候发现服务器上的时间快了几十秒,尝试用 ntp 直接更新一下,结果没有成功,所以还是从头来过,先弄一下简单的理理。 思路
Linux 中的时间date在树莓派中来运行,首先是当前时间 $ date Tue Mar 8 10:05:13 UTC 2016 此时的北京时间刚好是 18:05 ,毕竟我们是 +8 时区,上面显示的是 UTC 时间。 Mac 里面的如下,是 CST 时间 $ date Tue Mar 8 18:07:04 CST 2016 除了显示时间, date 还能够把字符串中的时间按照指定的格式显示,以及设置时间。 其他的有关时间的获取
时间戳$ date +%s 1457432423 时区$ date +%Z CST 原来 CST 是北京时间(China Standard Time)的意思,UTC 就是 协调世界时 。 设置时间设置时间很简单,只要 -s, --set=STRING ,当然是需要管理员权限的。 后面的 STRING 比较自由。有用下面的格式: $ sudo date -s '2016-03-08 11:58:04' Tue Mar 8 11:58:04 UTC 2016 $ sudo date -s 'Tue Mar 8 11:55:03 UTC 2016' Tue Mar 8 11:55:03 UTC 2016 $ sudo date -s '2016-03-08' Tue Mar 8 00:00:00 UTC 2016 似乎还有更灵活的设置方式,不过还是用那种最朴实的吧。 附上一个显示时间的: $ date +'%Y-%m-%d %H:%M:%S' 2016-03-08 12:01:41 NTP这块有点麻烦,主要看了鸟哥的 NTP 時間伺服器 之后又做了些实验大概知道怎么回事了。 简单的设置时间一般的给一个机器设置时间只要 ntpdate 命令就好了,另外的情况可能是需要自己搭 NTP 服务器来使一块机房的机器时间保持同步的时候才会使用吧,而且那个时间好像很慢的样子,现在先只简单的设置下时间就好,所以那些先不予考虑。 $ sudo ntpdate <server> 在这里找到了国内的 NTP Server: pool.ntp.org: NTP Servers in China, cn.pool.ntp.org 取一个拿来用 0.asia.pool.ntp.org ,这个域名对应的 IP 地址是不停变动的,为了实现更好的同步吧。 sudo ntpdate 0.asia.pool.ntp.org 这个命令执行完之后会直接把时间改掉。似乎那种 ntpd 的方式会渐进的调整时间,且会一直去同步时间,服务器上应该需要启动这个吧。 上面的命令在旁边的树莓派上是可用的,但是在远程的服务器上总是失败,错误如下: $ sudo ntpdate 202.118.1.46 8 Mar 20:49:47 ntpdate[10113]: no server suitable for synchronization found 感觉是端口被封了,NTP 使用的是 123 Port。 用 ntp 来同步时间在 $ sudo service ntp start 过后,就可以 ntpq -pn 来看状态,下面的结果说明端口被封了吧,reach 全都是 0。 $ ntpq -pn remote refid st t when poll reach delay offset jitter ============================================================================== 123.108.200.124 .INIT. 16 u - 64 0 0.000 0.000 0.000 129.250.35.250 .INIT. 16 u - 64 0 0.000 0.000 0.000 212.26.18.41 .INIT. 16 u - 64 0 0.000 0.000 0.000 202.71.140.36 .INIT. 16 u - 64 0 0.000 0.000 0.000 91.189.89.199 .INIT. 16 u - 64 0 0.000 0.000 0.000 TroubleshootingNTP < Support < NTP 用 Mac 来 debug好在 Mac 上也有 ntpd,参照: Setup an NTP Server in Mac OS X 10.8 – Philipp Klaus's Computing Blog 进行下面的:
可以看到这个 NTP 协议两端都是用 123 端口通信的,所以有防火墙的环境才比较容易失败吧。 暂且这样,之后再说。 参考
扩展
|