一:更新系統時間的方式 1、手動修改 通過相關工具來手動修改系統的時間。 2、自動同步 使用NTP自動同步系統時間。 二:手動修改系統時間 1、date工具 作用:顯示和設置系統時間 選項: -d <字元串> 顯示字元串所指的日期與時間,比如:"-1 day" 表示當前日期的前一天,必須要加雙引號 ...
一:更新系統時間的方式
1、手動修改
通過相關工具來手動修改系統的時間。
2、自動同步
使用NTP自動同步系統時間。
二:手動修改系統時間
1、date工具
作用:顯示和設置系統時間
選項:
-d <字元串> 顯示字元串所指的日期與時間,比如:"-1 day" 表示當前日期的前一天,必須要加雙引號
-s <字元串> 設置當前的時間和日期 #年月日使用(-)分隔,時分秒使用(:)分隔
時間格式:
# 顯示時間格式: date [+指定的格式]
# 相關格式說明:
%T:time,顯示時分秒,24小時制(hh:mm:ss)
%F:full date,顯示年月日,%Y-%m-%d
# 說明:
Y: 年
m:月
d:日
H:時
M:分
S:秒
例如:顯示年月日時分秒
# 格式:
date "+%F %T" # 需要用雙引號括起來 表示這是一個整體
root@ubuntu1804:~# date
Tue 28 Mar 2023 11:07:08 AM CST
root@ubuntu1804:~# date +"%F"
2023-03-28
root@ubuntu1804:~# date +"%T"
11:07:18
root@ubuntu1804:~# date +"%F %T"
2023-03-28 11:07:29
只修改年月日:
date -s "20220710" 或 date -s "YYYY-MM-DD" # 時間設置成2022年7月10日0時0分
只修改時分秒:
date -s "hh:mm:ss"
全部都改:
date -s "YYYY-YY-DD HH:mm:ss"
說明:
使用date命令修改的時間是臨時生效的,重啟系統後失效,需要將當前時間和硬體時間同步後才可以持久生效。
2、hwclock工具
作用:實現時間的校對,將硬體時間和系時間進行校對。使用date手動修改了時間後,需要使用hwclock進行校對。
選項:
-s, --hctosys # 以硬體時鐘為準,校正系統時鐘
-w, --systohc # 以系統時鐘為準,校正硬體時鐘
說明:clock是hwclock的一個軟鏈接
# centos存在clock和hwclock
[root@Centos8 ~]# ll `which hwclock`
-rwxr-xr-x. 1 root root 66928 Jul 22 2020 /usr/sbin/hwclock
[root@Centos8 ~]# ll `which clock`
lrwxrwxrwx. 1 root root 7 Jul 22 2020 /usr/sbin/clock -> hwclock
# clock是hwclock的一個軟鏈接,ubuntu上面只有hwclock
root@ubuntu1804:~# which clock
root@ubuntu1804:~# which hwclock
/sbin/hwclock
例如:將系統時間同步到硬體時間
# 同步的時候沒有任何提示
root@ubuntu1804:~# hwclock -w
root@ubuntu1804:~#
例如:將硬體時間同步到系統時間
# # 同步的時候沒有任何提示
root@ubuntu1804:~# hwclock -s
3、timedatectl 工具
作用:timedatectl 工具可以用來更改時區也可以用來修改系統時間,一般是用來更改時區用的。
查看時區列表:
# 格式 timedatectl list-timezones
# 例如:
root@ubuntu1804:~# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
.......
修改時區:
# 格式
timedatectl set-timezone 時區
# 例如:修改時區 修改時區無任何提示
root@ubuntu1804:~# timedatectl set-timezone Asia/Shanghai
修改日期時間:
timedatectl set-time "2017-01-23 10:30:00" # YYYY-mm-dd HH-MM-SS
開啟NTP:
timedatectl set-ntp true/false
通過軟鏈接的方式修改時區:
# 存放時區信息 /etc/timezone
root@ubuntu1804:~# cat /etc/timezone
Asia/Shanghai
# 修改時區影響的文件 /etc/localtime
# 例如
root@ubuntu2004:~# rm -f /etc/localtime #更改時區最終收到影響的文件:/etc/localtime
root@ubuntu2004:~# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
root@ubuntu1804:~# ll /etc/localtime
lrwxrwxrwx 1 root root 35 Mar 28 11:20 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
三:使用NTP自動同步時間
NTP(Network Time Protocol)協議,網路時間協議。利用ntp協議可以實現網路中的電腦時間同步。
1、ntpdate工具
作用:利用時間同步伺服器的時間來校準本機的時間,使用互聯網上的時間同步伺服器需要連接互聯網
格式:
ntpdate server_host
例如: 使用ntpdate同步時間
root@ubuntu1804:~# apt install ntpdate
root@ubuntu1804:~# date
Tue Dec 13 15:12:07 CST 2022
root@ubuntu1804:~# date -d '-1 day'
Mon Dec 12 15:12:22 CST 2022
root@ubuntu1804:~# ntpdate ntp.aliyun.com
13 Dec 15:12:36 ntpdate[15040]: adjust time server 203.107.6.88 offset 0.002588 sec
root@ubuntu1804:~# date
Tue Dec 13 15:12:40 CST 2022 #同步後的時間
2、ntp工具
作用:利用時間同步伺服器的時間來校準本機的時間,能持久同步時間而不是一次同步。
說明:ntp工具是客戶端和伺服器都是一個工具,預設作為客戶端使用。
ntp作為客戶端:可以用來校準本地時間為其它ntp伺服器的時間
ntp作為服務端:用來搭建ntp時間伺服器,其它主機同步本機時間
ntp的客戶端工具:
- ntpq工具:是ntp的命令行工具,用於查詢和控制 NTP 伺服器,並獲取與伺服器時間同步的信息。
# 查看 NTP 伺服器狀態:顯示當前電腦與所有已配置 NTP 伺服器之間的時間同步狀態
ntpq -p
# 查看 NTP 伺服器系統狀態:顯示每個 NTP 伺服器的系統狀態信息
ntpq -c sysstat
# 查看電腦與 NTP 伺服器之間的同步狀態:示電腦與 NTP 伺服器之間的同步狀態,包括時間差和延遲等信息
ntpq -c loopstats
3、chrony工具
作用:利用時間同步伺服器的時間來校準本機的時間,能持久同步時間而不是一次同步。同步的精度和速度比ntp更快。
埠:
- 服務端udp的123埠,如果chrony開啟了客戶端功能的話,會對123\udp埠進行監聽。
- 客戶端監聽udp的323埠,作用同上。
chrony作為客戶端:可以用來校準本地時間為其它ntp伺服器的時間
chrony作為服務端:用來搭建ntp時間伺服器,其它主機同步本機時間
chrony的客戶端工具:
- chronyc工具:用於管理和監控 NTP(網路時間協議)客戶端的命令行工具
# 檢查 NTP 伺服器的狀態:顯示當前的時間誤差,NTP 伺服器的狀態,NTP 版本號等信息。
chronyc tracking
# 查看可用的 NTP 伺服器列表:查看本地電腦與 NTP 伺服器之間的連接狀態
chronyc sources
# 調整時鐘頻率:立即調整系統時鐘,使其與 NTP 伺服器同步
chronyc makestep
# 顯示當前的活動:顯示 NTP 守護進程的當前狀態,例如它是否正在向其他 NTP 伺服器發送請求或接收響應。
chronyc activity
四:NTP的配置
通過將一臺主機搭建為時間伺服器,其它區域網內的主機可以和本機的時間進行同步。
1、ntp工具
作為客戶端:
只需要在配置文件中指定ntp伺服器的地址就行
root@ubuntu1804:~# vim /etc/ntp.conf
pool ntp.aliyun.com iburst # iburst表示加速同步
作為服務端:
將本機時間作為標準,以此給其它主機同步時間。
# 以本機時間為準,允許所有用戶進行同步
root@ubuntu1804:~# vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
restrict default
restrict:
restrict
:用於限制哪些主機或網路可以與時間伺服器進行通信。預設是restrict default
允許所有主機同步- 配置
restrict
參數可以幫助保護時間伺服器免受不必要的流量和安全攻擊。
# 格式 restrict [IP] [mask] [netmask_IP] [patameter]
# 參數
default # 預設參數,表示沒有限制。這意味著任何客戶端都可以訪問該伺服器併進行時間同步
ignore # 表示忽略所有的 NTP 請求,這意味著客戶端無法與伺服器進行時間同步。
nomodify # 表示客戶端無法修改伺服器的時間設置
noquery # 表示客戶端無法查詢伺服器的狀態信息,例如版本號、偏差等。
limited # 表示限制客戶端的訪問速率,防止客戶端過於頻繁地請求時間同步。
ntpport # 指定允許訪問伺服器的 NTP 埠範圍
# 例如:
# 允許所有客戶端訪問伺服器 (預設)
restrict default
# 限制只有同一個區域網內的主機可以同步時間
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
# 限制來自192.168.1.0/24子網範圍內的主機只能通過1234埠訪問NTP伺服器,而不允許使用其他埠訪問。
restrict 192.168.1.0 mask 255.255.255.0 ntpport 1234”
# 限制來自 192.168.1.0/24 網段的所有主機,禁止其查詢伺服器,並且不信任該網段的主機。
restrict 192.168.1.0 mask 255.255.255.0 noquery notrust
# 區域網裡面搭建ntp就使用這個進行限制。
# 允許192.168.0.0網段訪問時間伺服器,但是不能修改時間伺服器的一些配置。
# modify 表示禁止客戶端修改伺服器的時間設置,notrap 表示禁止客戶端使用 trap 操作。
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
2、chrony工具
作為客戶端:
只需要使用server或pool指定ntp伺服器的地址就行了。
root@ubuntu1804:~# vim /etc/chrony/chrony.conf
server ntp.aliyun.com
作為服務端:
將本機時間作為標準,其它主機的時間同步本機時間。
因為chrony預設是作為客戶端使用的,即服務端的123埠預設沒開,需要在配置文件中使用allow指定才會切換為服務端模式。
# 修改改配置文件
root@ubuntu1804:~# vim /etc/chrony/chrony.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
local stratum 10 # 使用本地硬體時鐘作為時間源,並將同步級別設置為 10,表示該伺服器的時間較準確
allow 0.0.0.0/0 # 指定允許同步的網段 表示的是任何主機都可以和本機進行時間的同步
# fudge這行是時間伺服器的層次。設為0則為頂級,如果要向別的NTP伺服器更新時間,請不要把它設為0
說明:
- server:用於指定單個NTP伺服器
- pool:用於指定NTP伺服器池而不是單個NTP伺服器
- iburst:讓同步時間的時候更快,開啟多個並行任務來進行同步
- prefer:表示如果指定了多個時間伺服器的情況下優先用這個
server 192.168.7.49 prefer iburst # prefer表示如果指定了多個時間伺服器的情況下優先用這個 iburst:表示加速時間同步
五:具體實現
1、 ntp
使用ntp同步ntp伺服器上的時間
# 安裝ntp服務
root@ubuntu1804:~# apt install ntp
# 只需要在配置文件中加入這個就行
root@ubuntu1804:~# vim /etc/ntp.conf
pool ntp.aliyun.com
# 查看 NTP 伺服器狀態
root@ubuntu1804:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp.aliyun.com .POOL. 16 p - 64 0 0.000 0.000 0.000
# 查看同步後的時間
root@ubuntu1804:~# date
Wed Mar 29 14:08:54 CST 2023
使用ntp搭建本地時間伺服器
搭建好後需要等待5-10分鐘才行
# 修改客戶端時間用於測試
root@ubuntu1804:~# date -s "20220329"
Tue Mar 29 00:00:00 CST 2022
# 1. 修改服務端配置文件
root@ubuntu1804:~# vim /etc/ntp.conf
pool ntp.aliyun.com iburst
server 127.0.0.1 iburst
fudge 127.127.1.0 stratum 10
restrict source 10.0.0.0 mask 255.255.255.0 nomodify
# 2. 查詢和顯示NTP伺服器的狀態
root@ubuntu1804:/var/log/ntpstats# ntpstat
synchronised to local net at stratum 11
time correct to within 199 ms
polling server every 64 s
# 查看同步信息 沒帶星號說明還沒開始同步
root@ubuntu1804:/var/log/ntpstats# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
LOCAL(0) .LOCL. 10 l 11 64 37 0.000 0.000 0.000
# 帶星號說明已經開始同步
root@ubuntu1804:/var/log/ntpstats# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 10 l 54 64 377 0.000 0.000 0.000
# 3. 客戶端時間同步
root@ubuntu1804:~# ntpdate 10.0.0.22
15 Oct 00:19:27 ntpdate[3631]: no server suitable for synchronization found
# 服務端配置好後,需要等5-10分鐘左右才能同步成功,否則就會出現上面的提示
root@ubuntu1804:~# ntpdate 10.0.0.22
29 Mar 17:42:59 ntpdate[3632]: step time server 10.0.0.22 offset 14318478.924123 sec
# 查看更新後的時間
root@ubuntu1804:~# date
Wed Mar 29 16:15:44 CST 2023
2、chrony工具
使用chrony同步ntp伺服器上的時間
# 將本機時間修改為一個錯誤時間測試
root@ubuntu1804:~# date
Tue Mar 29 00:00:55 CST 2022
# 安裝服務
root@ubuntu1804:~# apt install chrony
# 修改配置文件
root@ubuntu1804:~# vim /etc/chrony/chrony.conf
pool ntp.aliyun.com iburst
# 重啟服務
root@ubuntu1804:~# systemctl restart chronyd.service
# 查看本地電腦與NTP伺服器之間的連接狀態
root@ubuntu1804:~# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 203.107.6.88 2 6 1 31 -8775h[ -8775h] +/- 31ms
# 查看有多少個ntp源線上
root@ubuntu1804:~# chronyc activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
root@ubuntu1804:~# date
Wed Mar 29 14:38:41 CST 2023
使用chrony搭建本地時間伺服器
# 客戶端時間設置
root@ubuntu1804:~# date -s "20220228"
Mon Feb 28 00:00:00 CST 2022
# 伺服器配置
root@ubuntu1804:~# vim /etc/chrony/chrony.conf
server 127.0.0.1 iburst
# fudge 127.127.1.0 stratum 10
local stratum 10
allow 0.0.0.0/0
# 重啟服務
root@ubuntu1804:~# systemctl restart chronyd.service
# 查看有多少個ntp源線上
root@ubuntu1804:~# chronyc activity
200 OK
0 sources online
0 sources offline
1 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
# 顯示本機時間和遠程伺服器同步的情況
root@ubuntu1804:~# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* localhost 10 6 177 9 -38ns[ +535ns] +/- 1362ns
# 客戶端同步時間
root@ubuntu1804:~# ntpdate 10.0.0.22
29 Mar 14:58:27 ntpdate[3607]: adjust time server 10.0.0.22 offset -0.020780 sec
root@ubuntu1804:~# date
Wed Mar 29 14:58:29 CST 2023
(51條消息) NTP伺服器配置_ntp配置_Resines的博客-CSDN博客
六:Windows搭建和使用NTP伺服器
1、windows搭建NTP伺服器
(1)修改註冊表啟動NTP server
快捷鍵win + R 打開“運⾏”菜單,輸⼊regedit打開Windows註冊表
修改註冊表配置,設定授權時間伺服器
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config”
[AnnounceFlags]修改設定值為5
修改註冊表配置啟動ntp伺服器:
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer”
[Enabled]數值修改為1
(2)重啟WindowsTime服務
# 管理員模式下cmd終端執⾏以下命令:
net stop w32time
net start w32time
2、windows使用NTP伺服器
(1)將WindowsTime服務設置自動啟動
打開Windows系統服務(Win + R然後輸⼊services.msc再回⻋),
找到Windows Time系統服務,右擊更改屬性,將其 "啟動類型" 改為 "⾃動"。
(2)指定ntp伺服器的地址
⿏標右擊電腦左下⻆的時間,打開:調整⽇期/時間(A)
選擇添加不同時區的時鐘
再選擇Internet時間,點擊:更改設置,勾選上⼩⽅塊,伺服器選擇上⼀步配置的IP地址,點擊⽴即更新.