㈠ linux的硬體時鍾
什麼是硬體時鍾?
記錄在CMOS中的時鍾,和系統是沒有關系的。是靠紐扣電池來保存和計數的。硬體時鍾能記錄的信息有且僅有一個時間值(注意,和時區沒有一毛錢關系)。所以,當我們設置硬體時鍾的時候,僅僅是設置了一個數值。當我們讀取硬體時鍾的時候,也僅僅是一個數值。
每次操作系統啟動的時候,都會讀取這個數值,然後同步到系統時鍾中。但是光讀取這個數值,對操作系統而言毫無意義(它不知道,你這個數值具體是哪個時區下的時間,自然就無法同步到系統時鍾)
那麼怎麼知道硬體時鍾記錄的時間是哪個時區的呢(local or utc)?只能是人為指定了(系統啟動的時候,自己指定。我認為系統自己指定也是人為指定的一種吧),我們下面看下例子(一個讀,一個寫),看看怎麼解釋(網上很多解釋我覺的不靠譜)
這里哪裡能看出人為指定的時區是什麼呢?
預設的就是這個文件/etc/adjtime指定的(很多人說centos 6中是/etc/sysconfig/clock這個文件。不解釋了,忘記這個文件吧)
看下/etc/adjtime的內容:
這里是UTC,所以上面的讀寫含義分別是
讀取出來的這個硬體時間是UTC的,直接同步到系統時間(我認為系統時間存的是UTC時間)。如果讀取出來的時間是LOCAL的,是不能直接同步系統時間的。先找到系統的時區文件/etc/localtime,根據當前時區計算出UTC時間,再同步到系統時間(還有一點,這里說一下, hwclock讀取的時候,最後都是以local時間顯示出來的,所以可能還有一層轉換)
把"2015-08-14 16:45:05"這個時間直接寫入硬體時鍾,同時更新/etc/adjtime的內容(方便下一次讀的時候,找到正確的時區)
那怎麼覆蓋/etc/adjtime的內容呢?
在讀寫的時候可以顯示指定,例如hwclock --local,hwclock --utc(如果不顯示指定,則使用/etc/adjtime的值)
㈡ 配置Linux的時鍾同步
Ubuntu系統默認的時鍾同步伺服器是ntp.ubuntu.com,Debian則是0.debian.pool.ntp.org等, 各Linux發行版都有自己的NTP官方伺服器。身在中國,使用這些都會有高延遲,但對時鍾同步這件事來說影響不大。
在某些環境下,比如公司內網、雲上子網等,是與互聯網隔絕的。這時要想做時鍾同步,就只能自己配置了。
本文介紹如何自己配置時鍾同步,不介紹如何自建NTP伺服器。
一般timesync是預裝的。如果沒有,可以使用以下命令手動安裝。
sudo apt install systemd-timesyncd 它和ntp是沖突的,二者只能安裝一個。
修改/etc/systemd/timesyncd.conf,把NTP設為華為內綠區可達的NTP伺服器。
修改完成後,需要restart後這個配置才生效。
如果以上systemd-timesyncd.service因為什麼原因而不存在,則可通過以下命令修復:
一般查看日期與時間是使用date。使用timedatectl可以查看到更多時鍾同步相關信息。
以下給出一些阿里雲的NTP列表,可以通過ping擇優使用。
以上就是 良許教程網 為各位朋友分享的配置Linux的時鍾同步。
最後,最近很多小夥伴找我要 Linux學習路線圖 ,於是我根據自己的經驗,利用業余時間熬夜肝了一個月,整理了一份電子書。無論你是面試還是自我提升,相信都會對你有幫助!目錄如下:
免費送給大家,只求大家金指給我點個贊!
電子書 | Linux開發學習路線圖
也希望有小夥伴能加入我,把這份電子書做得更完美!
推薦閱讀:
㈢ 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,而且受網路背景流量影響。
㈣ linux如何設置伺服器上的系統時間
date -s 「20181121 17:34:00」
輸入這條命令系統時間會設置為2018年11月21日17點39分。
修改之後你可以輸入date命令查詢當前時間。
(4)linux的時鍾管理擴展閱讀:
1、桌面右上角齒輪按鈕,點擊System Settings。
㈤ 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的狀態
㈥ 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
㈦ 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