Total Pageviews

Sunday, 13 August 2017

Linux的系统时钟调教



Linux的两种时间

Linux时钟分为 系统时钟(System Clock)和 硬件时钟(Real Time Clock,简称RTC)
Linux下,默认情况下,系统时间和硬件时间并不会自动同步。系统运行过程中,系统时间和硬件时间异步计时,互不干扰。
系统时钟是当前Linux Kernel的时钟,而硬件时钟是主板上由电池供电的时钟,硬件时钟可在BIOS中设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,并独立于硬件时间进行计时。
Linux中的所有命令(包括函数)均采用系统时钟。
Linux中,时钟相关的命令主要有 datehwclock

date

date [指令] [参数]
设定时间
1
2
3
4
5
6
7
8
9
10
11
#设定日期20170730 时刻归零00:00:00
date --s "20170730"
#设定时刻17:32:59 日期保持不变
date --s "17:32:59"
#以下六种均可同时设定日期和时刻
date --s "20170730 17:32:59"
date --s "17:32:59 20170730"
date --s "2017/07/30 17:32:59"
date --s "17:32:59 2017/07/30"
date --s "17:32:59 07/30/2017"
date --s "07/30/2017 17:32:59"

hwclock

1
2
3
4
5
6
#将系统时间写入硬件时间
hwclock --systohc
#将硬件时间写入系统时间
hwclock --hctosys
#将当前时间写入BIOS 避免重启后失效
hwclock -w

Linux的时区

时区是什么当然不用解释了
这一块讲解怎么设定时区

查看当前时区

date -R

手动设定时区

tzselect
跟着提示一步步完成选择后,复制相应的时区文件,替换系统时区文件;或者创建ln -s链接
例如修改时区为中国上海
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

时间同步的两种方式

手动设定或多或少会有偏差(将来出了偏差…),这时就可从时间服务器更新时间以获得更高精确度

ntpdate更新时间

如果你的linux提示ntpdate:command not found
1
2
debian: apt-get install ntpdate
centos: yum install ntpdate
安装完成后可直接执行命令
1
2
3
ntpdate [ntp时间服务器地址]
[root@nanqinlang ~] ntpdate time.nist.gov
30 Jul 18:01:08 ntpdate[11063]: adjust time server 216.229.0.179 63592.064680 sec
出现上面的内容即同步成功,然后在crontab里面加上以下:
*/360 * * * * ntpdate time.nist.gov #每隔六小时同步一次
推荐以下时间服务器:
1
2
3
4
5
6
time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org

ntp自建时间服务器

上面我提到使用ntp时间服务器来同步时间,这些时间服务器都是较权威的
而当我们自己搭建时间服务器时,就不用crontab定时去跑了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@nanqinlang ~] apt-get install ntp -y
[root@nanqinlang ~] yum install ntp -y
[root@nanqinlang ~] cat /etc/ntp.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}' #修改配置文件
restrict default kod nomodify notrap nopeer noquery #拒绝IPV4用户
restrict -6 default kod nomodify notrap nopeer noquery #拒绝IPV6用户
restrict 192.168.100.0 mask 255.255.255.0 nomodify #本地网段授权访问
restrict time.nist.gov #授权访问本地NTP
restrict 0.asia.pool.ntp.org
restrict 1.asia.pool.ntp.org
restrict 2.asia.pool.ntp.org
restrict 127.0.0.1
restrict -6 ::1
server time.nist.gov prefer #设定时间服务器,prefer表示优先
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
[root@nanqinlang ~] service ntp restart #重启服务
[root@nanqinlang ~] netstat -tlunp | grep ntp #查看进程,若看到123则启动成功
udp 0 0 136.243.26.229:123 0.0.0.0:*
11139/ntpd
udp6 0 0 ::1:123 :::*
11139/ntpd
[root@nanqinlang ~] ntpq -pn #查看同步的服务器IP
remote refid st t when poll reach delay offset jitter
+61.216.153.104 118.163.81.62 3 u 5 64 1 62.575 10.842 1.198
+212.47.249.141 5.103.128.88 3 u 4 64 1 217.645 -12.155 0.224
-51.15.41.135 5.103.128.88 3 u 3 64 1 230.814 -26.141 0.702
*108.59.2.24 130.133.1.10 2 u 2 64 1 235.620 -8.041 0.207
[root@nanqinlang ~] ntpstat #同步的结果
synchronised to local net at stratum 11
time correct to within 12 ms
polling server every 512 s
其中:
remote: NTP主机IP。最左边的符号,若”+”则表示是正在作用的上游NTP,若”*”则表示也有连上,只是作为次要NTP
refid: 参考的上游NTP地址
st: stratum阶层
when: 几秒前曾进行同步
poll: 多少秒后进行下次同步
reach: 已向上游NTP请求同步的次数
delay: 网络传输过程中钟延迟的时间
offset: 时间补偿结果
jitter: 系统时间与硬件时间的差异时间

No comments:

Post a Comment