linux系統時鍾
A. linux查看系統時間
1.登錄系統以後 在命令行模式下 輸入 date 命令
date [回車]
2.date命令會輸出 周幾 幾月 幾日 時間 和 時間顯示格式 和年份
參數設置
-d 用來用來規定時間的顯示格式
-s 用來設置時間 推薦一個網站——Linux命令大全,去查詢你所需要的Linux命令吧,如圖:
B. linux系統硬體時間和系統時間
在Linux中有硬體時鍾與系統時鍾兩種時鍾。硬體時鍾是指主機板上的時鍾設備,也就是通常可在BIOS畫面設定的時鍾。系統時鍾則是指kernel中的時鍾。所有Linux相關指令與函數都是讀取系統時鍾的設定。因為存在兩種不同的時鍾,那麼它們之間就會存在差異。當Linux啟動時,系統時鍾會去讀取硬體時鍾的設定,之後系統時鍾即獨立運作。
用date命令對系統時間進行設置後,並不會去修改硬體時鍾,所以系統重啟後,系統時間還算會去讀取硬體時間,這就是為何date設置失效到原因。
因此,需要在設置系統時間後,將系統時間同步到硬體時鍾。
clock/hwclock:
顯示與設定硬體時鍾(query and set the hardware clock (RTC)),兩個命令相同。RTC=Real Time Clock,也就是硬體時鍾。
命令參數:
-r, --show 讀取並列印硬體時鍾(read hardware clock and print result)-s, --hctosys 將硬體時鍾同步到系統時鍾(set the system time from the hardware clock)-w, --systohc 將系統時鍾同步到硬體時鍾(set the hardware clock to the current system time)
命令示例:
1. 查看硬體時鍾
2014年03月27日 星期四 11時03分50秒 -0.328520 seconds
[root@localhost ~]# hwclock -r
2014年03月27日 星期四 11時03分53秒 -0.797264 seconds
[root@localhost ~]# hwclock --show
2014年03月27日 星期四 11時04分01秒 -0.672267 seconds
2. clock與hwclock相同
同步網路時間到系統時間
[root@localhost ~]# ntpdate 210.72.145.4427 Mar 11:11:24 ntpdate[4766]: adjust time server 210.72.145.44 offset 0.011401 sec
210.72.145.44(中國西安授時中心的官方時間同步伺服器IP域名)
同步網路時間到系統時間後,就可以用hwclock -w將系統時間同步到硬體時間。
修改時區
可能部分系統在執行以上兩步後,在重啟後仍然失效,所以需要進行時區修改。
[root@localhost ~]# tzselect #按照提示進行選擇時區
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系統時間配置文件
[root@localhost ~]# /etc/sysconfig/clock
#打開clock文件,將相關內容改成以下內容
UTC=false
ARC=false
ZONE="Asia/Shanghai"
重啟系統
[root@localhost ~]# reboot
C. linux上ntp時鍾伺服器搭建
配置的時鍾伺服器的ip地址為192.168.100.116
第一步 為伺服器和客戶機安裝ntp ntpdate
[root@sql-proxy1 app]#yum install ntp ntpdate -y第二步 查找時間同步伺服器
http://www.pool.ntp.org/zone/asia #在裡面可以找到中國第三步 編輯 /etc/ntp.conf
[root@sql-proxy1 app]#vim /etc/ntp.conf server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org #以上四個是時間同步伺服器server 127.127.1.0 iburst local clock #當外部時間不可用時,使用本地時間restrict 192.168.10.1 mask 255.255.255.0 nomodify #允許更新的IP地址段第四步 啟動ntp服務
[root@sql-proxy1 app]#systemctl start ntpd第五步 驗證服務
[root@sql-proxy1 app]#ntpq -p remote refid st t when poll reach delay offset jitter
==============================================================================
120.25.115.19 .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp6.flashdance .INIT. 16 u - 64 0 0.000 0.000 0.000
time5.aliyun.co .INIT. 16 u - 64 0 0.000 0.000 0.000
85.199.214.101 .INIT. 16 u - 64 0 0.000 0.000 0.000
biisoni.miuku.n .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp5.flashdance .INIT. 16 u - 64 0 0.000 0.000 0.000
leontp.ccgs.wa. .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp1.ams1.nl.le .INIT. 16 u - 64 0 0.000 0.000 0.000
*LOCAL(0) .LOCL. 5 l 7 64 1 0.000 0.000 0.000
第六步 遠程客戶端時間同步測試
[root@sql-mysql2 ~]#ntpdate 192.168.10.116 17 Dec 20:55:08 ntpdate[11904]: adjust time server 172.18.68.31 offset -0.000067 sec
第七步 客戶端設置計劃任務,每天晚上1點同步時間
crontab -e
00 01 * * * root /usr/sbin/ntpdate 192.168.10.116; /usr/sbin/clock -w
EDT 時間即美國東部時間。這里要改為北京時間即可:
命令如下:
root@ubuntu# mv /etc/localtime /etc/localtime.bak
root@ubuntu# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
root@ubuntu# date
修改116伺服器本機的ntp時間同步
systemctl stop ntpd
ntpdate cn.pool.ntp.org
systemctl start ntpd
rpm -qa |grep ntp #檢查ntp版本
service ntpd status #查詢ntp服務狀態
service ntpd start #啟動
service ntpd stop #停止
service ntpd restart #重啟
ntpq -p #查看ntp伺服器與上層ntp的狀態
D. Linux 7系統修改時間
1 TIMEDATECTL命令
該命令是作為systemd系統和服務管理器的一部分分發的工具,可以用它來查看和更改系統時鍾的配置,包括更改當前的日期和時間、設置時區以及可以激活與遠端伺服器系統時鍾的自動同步,是紅帽企業版 7 版本新增的命令。
1.1 展示當前日期和時間
可以使用timedatectl命令來展示當前日期和時間,並且有系統和硬體時鍾的配置的詳細信息。
[root@strong ~]# timedatectl
Local time: Sat 2019-09-21 15:02:27 CST
Universal time: Sat 2019-09-21 07:02:27 UTC
RTC time: Sat 2019-09-21 07:02:27
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
1.2 更改當前時間
更改當前時間,命令格式為:timedatectl set-time HH:MI:SS。
該命令同時更改系統時間和硬體時鍾,執行結果與使用命令date --set 和hwclock --systohc的效果相同。
[root@strong ~]# timedatectl set-time 20:00:00
[root@strong ~]# timedatectl
Local time: Sat 2019-09-21 20:00:04 CST
Universal time: Sat 2019-09-21 12:00:04 UTC
RTC time: Sat 2019-09-21 12:00:05
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@strong ~]# timedatectl set-time 2019-09-15
[root@strong ~]# timedatectl
Local time: Sun 2019-09-15 00:00:03 CST
Universal time: Sat 2019-09-14 16:00:03 UTC
RTC time: Sat 2019-09-14 16:00:03
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
僅僅更改日期,時間會變為00:00:00,故更改日期時需把對應的時間加上,例如:timedatectl set-time "2019-09-21 15:16:00"。
1.4 更改時區
1.4.1 列出所有時區
[root@strong ~]# timedatectl list-timezones
1.4.2 更改時區
[root@strong ~]# timedatectl set-timezone Asia/Shanghai
2 DATE命令
該命令在所有Linux系統都可用,用於設置和查看當前日期和時間,常用於腳本中以格式化的形式用於展示系統時間的詳細信息。
2.1 展示當前日期和時間
1)不帶任何格式展示
[root@strong ~]# date
Sat Sep 21 15:24:57 CST 2019
默認展示的是本地時間,以UTC的方式展示,需使用date --utc或date -u。
[root@strong ~]# date --utc
Sat Sep 21 07:25:50 UTC 2019
2)格式化展示
客制化日期和時間的展示格式,使用命令:date +"格式"。
常用的格式為:
控制格式
描述
%H
以HH格式展示小時;
%M
以MM格式展示分鍾;
%S
以SS格式展示秒;
%d
以DD格式展示天數;
%m
以MM格式展示月;
%Y
以YYYY格式展示年;
%Z
時區;
%F
以YYYY-MM-DD格式展示日期,和%Y-%m-%d等價;
%T
以HH:MM:SS格式展示時間,和%H:%M:%S等價;
[root@strong ~]# date
Sat Sep 21 15:37:18 CST 2019
[root@strong ~]# date +"%Y-%m-%d %H:%M:%S"
2019-09-21 15:38:00
2.2 更改當前時間
更改當前時間,命令格式為:date --set HH:MM:SS。
[root@strong ~]# date --set 15:40:20
Sat Sep 21 15:40:20 CST 2019
2.3 更改當前日期
更改當前日期,命令格式為:date --set YYYY-MM-DD。
[root@strong ~]# date --set 2019-09-25
Wed Sep 25 00:00:00 CST 2019
僅僅更改日期,時間會變為00:00:00,故更改日期時需把對應的時間加上,例如:
[root@strong ~]# date --set "2019-09-21 15:42:35"
Sat Sep 21 15:42:35 CST 2019。
3 CLOCK命令
該命令是用於訪問硬體時鍾的工具,也稱為Real Time Clock(RTC),對應的設置保存在/etc/adjtime文件中。硬體時鍾獨立於操作系統,即使系統關閉,它仍然工作,用於從硬體時鍾展示時間。
3.1 展示當前日期和時間
[root@strong ~]# hwclock
Sat 21 Sep 2019 03:51:24 PM CST -0.368709 seconds
3.2 設置日期和時間
設置日期和時間的命令為:hwclock --set --date "dd mmm yyyy HH:MM"
[root@strong ~]# hwclock --set --date "21 Sep 2019 16:02:25"
[root@strong ~]# hwclock
Sat 21 Sep 2019 04:02:35 PM CST -0.342764 seconds
3.3 同步日期和時間
可以使用hwclock命令在硬體時鍾和當前系統時間直接互相同步。
3.3.1 系統時間同步到硬體時鍾
[root@strong ~]# hwclock --systohc
3.3.2 硬體時鍾同步到系統時間
[root@strong ~]# hwclock --hctosys
E. Linux 時間同步
在Linux系統中存在兩個時鍾時間,分別是
硬體時鍾是指的在主板上的時鍾設備,也就是通常可以在BIOS畫面設置的時鍾,即使關機狀態也可以計算時間。
而系統時鍾則是指Kernel中的時鍾,其值是由1970年1月1日00:00:00 UTC時間至當前時間所經歷的秒數總和。當Linux啟動的時候,系統時鍾會讀取硬體時鍾的設定,之後系統時鍾獨立運作。長時間運行兩者可能將會產生誤差。另外所有的Linux相關指令都是讀取系統時鍾指定的,如date。
我們這里討論的是系統時間。
NTP,網路時間協議,使用 123/udp 埠進行網路時鍾同步;NTP 是仍在使用中的最古老的網路傳輸協議之一(1985 年前開始)。
以前Linux時間同步基本是使用 ntpdate 和 ntpd 這兩個工具實現的,但是這兩個工具已經很古老了。
【注】ntpdate和ntpd是互斥的,兩者不能同時使用。ntpd是步進式平滑的逐漸調整時間,而ntpdate是斷點式更新時間。
RHEL/CentOS 7.x 已經將 chrony 作為默認時間同步工具了。
其他Linux (如 ubuntu) 使用 systemd-timesyncd 服務。
chrony 是 RedHat 開發的,它是網路時間協議(NTP)的另一種實現;
RHEL/CentOS 7.x 的默認時間同步工具;
chrony 可以同時做為 ntp 服務的客戶端和服務端;安裝完後有兩個程序 chronyd、chronyc:
chronyd 是一個 daemon 守護進程,chronyc 是用來監控 chronyd 性能和配置參數的命令行工具。
系統版本:CentOS 7.5
chrony_server(relay):10.0.0.4
chrony_client:10.0.0.5
Edit file /etc/chrony.conf
默認已經啟動,不需要調整
example:
配置 chrony
edit file: /etc/chrony.conf
再次用chronyc 命令檢查,比較它與chronyd server的差異
systemd-timesyncd 是一個用於跨網路同步系統時鍾的守護服務。它實現了一個 SNTP 客戶端,但更輕量級,更集成systemd。
systemd-timesyncd 啟動時會讀取 /etc/systemd/timesyncd.conf 配置文件,內容如下:
你可以輸入你希望使用的其它時間伺服器,比如你自己的本地 NTP 伺服器,在 NTP= 行上輸入一個以空格分隔的伺服器列表。
如果伺服器可以直接連接internet,不用修改默認配置;如果在內網,需要單獨指定。
在最新的 Ubuntu 版本中,timedatectl 替代了老舊的 ntpdate。默認情況下,timedatectl 在系統啟動的時候會立刻同步時間,並在稍後網路連接激活後通過 socket 再次檢查一次。
timesyncd 替代了 ntpd 的客戶端的部分。默認情況下 timesyncd 會定期檢測並同步時間。它還會在本地存儲更新的時間,以便在系統重啟時做時間單步調整。
通過 timedatectl 和 timesyncd 設置的當前時間狀態和時間配置,可以使用 timedatectl status 命令來進行確認。
由於 timedatectl 的存在,各發行版已經棄用了 ntpdate,默認不再進行安裝。
timedatectl
timedatectl status ,查看時間同步狀態;
timedatectl set-ntp true ,開啟網路時間同步;
timedatectl set-timezone ZONE ,設置時區。
NTP synchronized: yes 表示時間是同步狀態。
查看服務狀態以及從哪個ntp server同步時間。
NTP:軟體層面實現,成本低。同步精度10ms左右。
PTP:需要網路介面具備在物理層提供時間戳的功能,同步精度優於100ns,區域網的節點需要使用支持PTP功能的交換機。區域網網路接點不支持PTP的話,只能同不到us,而且受網路背景流量影響。
F. Linux系統下的NTP配置
第一步,選擇最好的NTP服務地址
具體命令為ntpdate -q IP地址或域名
廣東地區NTP優選結果如下:
①time4.cloud.tencent.com
②server time.asia.apple.com
③server cn.ntp.org.cn
④server ntp.aliyun.com
⑤server cn.pool.ntp.org
檢查BIOS主板時間的命令
hwclock -r
NTP服務啟停命令
sudo systemctl start/stop ntpd
檢查查看ntp伺服器有無和上層ntp連通
ntpstat
查看ntp伺服器與上層ntp的狀態
ntpq -pn
===server選項格式===
server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]
其中host是上層NTP伺服器的IP地址或域名,隨後所跟的參數解釋如下所示:
◆ key: 表示所有發往伺服器的報文包含有秘鑰加密的認證信息,n是32位的整數,表示秘鑰號。
◆ version: 表示發往上層伺服器的報文使用的版本號,n默認是3,可以是1或者2。
◆ prefer: 如果有多個server選項,具有該參數的伺服器優先使用。
◆ mode: 指定數據報文mode欄位的值。
◆ minpoll: 指定與查詢該伺服器的最小時間間隔為2的n次方秒,n默認為6,范圍為4-14。
◆ maxpoll: 指定與查詢該伺服器的最大時間間隔為2的n次方秒,n默認為10,范圍為4-14。
◆ iburst: 當初始同步請求時,採用突發方式接連發送8個報文,時間間隔為2秒。
===同步硬體時鍾===
ntp服務,默認只會同步系統時間。
如果想要讓ntp同時同步硬體時間,可以設置/etc/sysconfig/ntpd文件,
在/etc/sysconfig/ntpd文件中,添加【SYNC_HWCLOCK=yes】這樣,就可以讓硬體時間與系統時間一起同步。
允許BIOS與系統時間同步,也可以通過hwclock -w 命令。
hwclock命令用來查詢和設置硬體時鍾。
hwclock -r 讀取並列印硬體時鍾
hwclock -s 將硬體時鍾同步到系統時鍾
hwclock -w 將系統時鍾同步到硬體時鍾
系統時鍾與硬體時鍾
在Linux中有硬體時鍾與系統時鍾等兩種時鍾。硬體時鍾是指主機板上的時鍾設備,也就是通常可在BIOS畫面設定的時鍾。系統時鍾則是指kernel中的時鍾。當Linux啟動時,系統時鍾會去讀取硬體時鍾的設定,之後系統時鍾即獨立運作。所有Linux相關指令與函數都是讀取系統時鍾的設定。
參考文檔:
Linux伺服器NTP客戶端配置——https://www.cnblogs.com/paul8339/p/10059364.html
NTP服務、客戶端配置詳解——https://blog.51cto.com/u_11392081/1784080