Linux 时间同步
2019-07-30 本文已影响0人
舌尖上的大胖
Linux 服务器可以通过命令来进行时间同步。
一、ntpdate
同步网络时间
# 安装 ntpdate
$ sudo yum install -y ntpdate
# 执行时间同步
$ sudo ntpdate -u ntp.api.bz
NTP 常用服务器:
210.72.145.44 ................ 中国国家授时中心
ntp.api.bz ................... NTP服务器(上海)
time.nist.gov ............... 美国
ntp.fudan.edu.cn ............ 复旦
time.windows.com ............ 微软公司授时主机(美国)
asia.pool.ntp.org ............ 台警大授时中心(台湾)
经测试中国国家授时中心与 NTP 上海服务器可以正常同步时间,注意需要加上 -u
参数。
注意:若不加上 -u
参数,会提示:no server suitable for synchronization found;
-u
:从 man ntpdate
中可以看出 -u
参数可以越过防火墙与主机同步。
二、通过 Web 服务器同步
通过 HTTP 的 HEAD 方法访问 Web 服务器可以获取到头信息:
$ curl -I baidu.com
返回结果:
HTTP/1.1 200 OK
Date: Mon, 29 Jul 2019 17:37:34 GMT
Server: Apache
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-47cf7e6ee8400"
Accept-Ranges: bytes
Content-Length: 81
Cache-Control: max-age=86400
Expires: Tue, 30 Jul 2019 17:37:34 GMT
Connection: Keep-Alive
Content-Type: text/html
其中,cURL 可以:
-
curl -x $proxy
指定代理服务器 -
curl -H 'Cache-Control: no-cache'
避免缓存
可以通过解析 Date
字段值来设置时间。由于 Date
字段值是 GMT 时间,所以需要按 UTC 时间处理。
(一)显示时间
1、根据当前区域设置显示时间,后面传入的时间需要以最后的 Z
来区分传入的时间是否为 UTC 时间:
$ date -d "$(curl -H 'Cache-Control: no-cache' -sI baidu.com | grep '^Date:' | cut -d' ' -f3-6)Z"
显示为 CST 时间:
2019年 07月 30日 星期二 08:00:00 CST
2、指定显示 UTC 时间,后面传入的时间不管最后是否带有 Z
都被理解为 UTC 时间
$ date -ud "$(curl -H 'Cache-Control: no-cache' -sI baidu.com | grep '^Date:' | cut -d' ' -f3-6)"
显示为 UTC 时间:
2019年 07月 29日 星期一 18:14:36 UTC
(二)设置时间
1、在时间后跟 Z
表示传入的时间按 UTC 时间处理
$ sudo date -s "$(curl -H 'Cache-Control: no-cache' -sI baidu.com | grep '^Date:' | cut -d' ' -f3-6)Z"
设置后回显 CST 时间
2019年 07月 30日 星期二 02:19:16 CST
2、通过 -u
指定为 UTC 时间,是否加 Z
都可以
$ sudo date -us "$(curl -H 'Cache-Control: no-cache' -sI baidu.com | grep '^Date:' | cut -d' ' -f3-6)"
设置后回显 UTC 时间
2019年 07月 29日 星期一 18:19:53 UTC
参数说明:
-s, --set=STRING
set time described by STRING
-u, --utc, --universal
print or set Coordinated Universal Time (UTC)
三、手工同步
1、使用 date
命令查看当前时间
结果如下:
Tue Jul 30 01:20:43 CST 2019
2、使用 date -s
设置当前时间
$ sudo date -s '16:30:00'
结果如下:
Wed Feb 4 16:30:00 CST 2015
3、使用 date -s "YYYY-MM-DD hh:mm[:ss]"
如:
$ date -s "2015-02-04 16:30:00"
# 将时间写入 BIOS 避免重启失效
$ hwclock -w
四、参考资料
(完)