【推荐阅读】
Linux时间设置 date、hwclock、timedatectl
date 查看及设置系统时间:
[root@localhost ~]# date
Thu Jan 13 16:30:27 CST 2022
[root@localhost ~]# date -s "20220113 16:33:00"
Thu Jan 13 16:33:00 CST 2022
hwclock设置系统时间:
[root@localhost ~]# hwclock
2022-01-13 16:37:35.195393+08:00
//同步硬件时间到系统时间
[root@localhost ~]# hwclock -s
[root@localhost ~]# hwclock --hctosys
//同步系统时间到硬件时间
[root@localhost ~]# hwclock -w
[root@localhost ~]# hwclock --systohc
timedatectl时间管理:
//查询时间及时区
[root@localhost ~]# timedatectl
Local time: Thu 2022-01-13 16:53:10 CST
Universal time: Thu 2022-01-13 08:53:10 UTC
RTC time: Thu 2022-01-13 16:53:09
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: yes
//查询并设置时区
[root@localhost ~]# timedatectl list-timezones
[root@localhost ~]# timedatectl set-timezone "Asia/Shanghai"
//设置日期和时间
[root@localhost ~]# timedatectl set-time '16:10:40 2015-11-20'
[root@localhost ~]# timedatectl set-time UTC
//设置硬件时间为本地时间
[root@localhost ~]# timedatectl set-local-rtc 1
[root@localhost ~]# timedatectl set-local-rtc 0
//
Linux时间同步 ntpdate、ntpd、chronyd
ntpdate时间同步:
[root@localhost ~]# ntpdate 192.168.0.1
[root@localhost ~]# ntpdate time.ntp.org
ntpd时间同步(端口:123):
//配置文件:/etc/ntp.conf
1. 关于权限设定部分
权限的设定主要以restrict这个参数来设定,主要的语法为:
restrict IP mask netmask_IP parameter
其中IP可以是软件地址,也可以是default,default就类似0.0.0.0。至于paramter则有:
ignore:关闭所有的 NTP 联机服务
nomodify:表示Client端不能更改Server端的时间参数
notrust:该Client除非通过认证,否则该Client来源将被视为不信任网域
noquery:不提供Client端的时间查询
notrap:不提供trap这个远程事件登入
如果paramter完全没有设定,那就表示该 IP (或网域)"没有任何限制"
restrict default nomodify notrap noquery # 关闭所有的NTP要求封包
restrict 127.0.0.1 # 这是允许本机查询
restrict 192.168.0.1 mask 255.255.255.0 nomodify # 在192.168.0.1/24网段内的服务器就可以通过这台NTP Server进行时间同步了
2. 上层主机的设定
要设定上层主机主要以server这个参数来设定,语法为:
server [IP|HOST Name] [prefer]
Server后面接的就是上层Time Server,后面加上perfer的话,那表示我们的NTP主机主要以该部主机来作为时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,可以使用driftfile来规定我们的主机,在与Time Server沟通时所花费的时间,可以记录在driftfile后面接的文件内,例如下面的范例中,我们的NTP server与cn.pool.ntp.org联机时所花费的时间会记录在/var/lib/ntp/drift文件内。
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server cn.pool.ntp.org prefer
3. 其他设置值,以系统默认值即可
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
keys /etc/ntp/keys
//确认ntp已经同步了时间
[root@localhost ~]# ntpstat
synchronised to NTP server (202.120.2.101) at stratum 4
time correct to within 557 ms
polling server every 64 s
# 该指令可列出NTP服务器是否与上层联机。由上述输出结果可知,时间校正约为557*10(-6)秒,且每隔64秒会主动更新时间。
//ntpq命令
[root@localhost ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*stratum2-1.ntp. 195.91.239.8 2 u 24 64 1 258.761 -16.146 16.491
ntp6.flashdance 194.58.202.148 2 u 23 64 1 330.604 47.243 13.014
a.chl.la 131.188.3.222 2 u 22 64 1 187.224 41.501 1.249
139.199.215.251 100.122.36.196 2 u 21 64 1 44.815 29.043 7.562
remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由"+"则代表目前正在作用钟的上层NTP,如果是"*"则表示也有连上线,不过是作为次要联机的NTP主机。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
when:几秒前曾做过时间同步更新的操作
poll:下次更新在几秒之后
reach:已经向上层NTP服务器要求更新的次数
delay:网络传输过程钟延迟的时间
offset:时间补偿的结果
jitter:Linux系统时间与BIOS硬件时间的差异时间
# ntp服务默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件。在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。
chronyd时间同步(端口:323):
//配置文件:
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
local stratum 10
# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
配置参数:
参数 | 参数说明 |
server | 该参数可以多次用于添加时钟服务器,必须以"server "格式使用。 |
stratumweight | stratumweight指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级。 |
driftfile | chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。 |
rtcsync | rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC) |
allow/deny | 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。 |
cmdallow/cmddeny | 指定哪个IP地址或哪台主机可以通过chronyd使用控制命令。 |
bindcmdaddress | 该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级。 |
makestep | 通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。 |
//查看时间同步源:
[root@localhost ~]# chronyc sources -v
210 Number of sources = 4
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 202.118.1.130 1 7 377 118 -1213us[-1553us] +/- 20ms
^- time.cloudflare.com 3 7 337 47 +48ms[ +48ms] +/- 166ms
^- ntp7.flashdance.cx 2 8 357 46 -13ms[ -13ms] +/- 229ms
^+ 139.199.215.251 2 8 377 57 -7428us[-7428us] +/- 32ms
//立即手工同步
[root@localhost ~]# chronyc -a makestep
200 OK
//查看时间同步源状态:
[root@localhost ~]# chronyc sourcestats -v
210 Number of sources = 4
.- Number of sample points in measurement set.
/ .- Number of residual runs with same sign.
| / .- Length of measurement set (time).
| | / .- Est. clock freq error (ppm).
| | | / .- Est. error in freq.
| | | | / .- Est. offset.
| | | | | | On the -.
| | | | | | samples. \
| | | | | | |
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
202.118.1.130 6 5 646 -10.813 97.702 -40us 5068us
time.cloudflare.com 11 5 1037 +0.211 13.118 +52ms 2892us
ntp7.flashdance.cx 22 12 32m +0.089 13.917 -26ms 8756us
139.199.215.251 25 11 32m -0.098 3.164 -514us 2062us
//校准时间服务器:
[root@localhost ~]# chronyc tracking
Reference ID : CA760182 (202.118.1.130)
Stratum : 2
Ref time (UTC) : Thu Jan 13 15:54:22 2022
System time : 0.000000001 seconds fast of NTP time
Last offset : -0.003181520 seconds
RMS offset : 0.002209083 seconds
Frequency : 7.816 ppm fast
Residual freq : -0.157 ppm
Skew : 3.514 ppm
Root delay : 0.044469427 seconds
Root dispersion : 0.005420812 seconds
Update interval : 129.1 seconds
Leap status : Normal
chronyc命令参数说明:
参数 | 参数说明 |
accheck | 检查NTP访问是否对特定主机可用 |
activity | 该命令会显示有多少NTP源在线/离线 |
add server | 手动添加一台新的NTP服务器 |
clients | 在客户端报告已访问到服务器 |
delete | 手动移除NTP服务器或对等服务器 |
settime | 手动设置守护进程时间 |
tracking | 显示系统时间信息 |