『壹』 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伺服器時間同步
Linux自帶了ntp服務 -- /etc/init.d/ntpd,這個服務不僅可以設置讓本機和某台/某些機器做時間同步,他本身還可以扮演一個timeserver的角色,讓其他機器和他同步時間。
配置文件就是/etc/ntp.conf。
為了測試,設置讓node2 -- 192.168.1.102和node1 -- 192.168.1.101做時間同步。
第一步,
node1做time server,node1本身不和其他機器時間同步,就是取本地時間。
所以,先把node1機器的時間調准了:
[root@node1 ~]date -s 08/03/2011
[root@node1 ~]date -s11:12:00
[root@node1 ~]clock -w
[root@node1 ~]hwclock --systohc
後兩個命令是把設置的時間寫到硬體時間中去(也就是CMOS裡面的時間)。
第二步,
然後將node1配置成一個time server,修改/etc/ntp.conf,
[root@node1 ~]vi /etc/ntp.conf
其他的配置不怎麼需要改,只需要關注restrict的配置:
1. 注釋掉原來的restrict default ignore這一行,這一行本身是不響應任何的ntp更新請求,其實也就是禁用了本機的ntp server的功能,所以需要注釋掉。
2. 加入:restrict 192.168.1.0 mask 255.255.255.0 -- 讓192.168.1.0/24網段上的機器能和本機做時間同步
3. 這樣就可以了,記得下面的:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
這兩行需要,這是讓本機的ntpd和本地硬體時間同步。
當然,我們也可以添加server xxx.xxx.xxx.xxx,讓他和其他的time server時間同步。
4. /etc/init.d/ntpd restart
5. chkconfig ntpd on
6. 修改iptables配置,將tcp和udp 123埠開放,這是ntp需要的埠,在/etc/services中可以查到這個埠。
第三步,
這樣node1就成為一台time server了,現在我們配置node2這台機器,也是修改/etc/ntp.conf ,
[root@node2 ~]vi /etc/ntp.conf
1. restrict default ignore這行保留為注釋狀態,因為sales不需要做time server
2. 注釋掉server 127.127.1.0, fudge 127.127.1.0 stratum 10這兩行,因為這台機器不需要和本地硬體時鍾同步了。
3. 加入server 192.168.1.101這行,和node1機器同步。
這樣就OK了。看看時間,已經和node1同步了。往後默認配置好像是5分鍾和time server同步一次。ntpdate命令是顯式的和某台機器做時間同步,以前將ntpdate放到crontab中定期同步也是可以的,但是既然ntpd本身就可以做這個時間
第四步,將ntpdate放到crontab中定期步也是可以的
[root@node2 ~]#vi ntpupdate.sh
/usr/sbin/ntpdate 192.168.1.101
[root@node2 ~]#chmod 755 ntpupdate.sh
[root@node2 ~]#crontab -e
*/1 * * * * /root/ntpupdate.sh
[root@node2 ~]#/etc/init.d/crond restart
『叄』 linux系統怎麼設置時間同步
命令行界面操作
1、對於linux系統大多數是命令行界面,所以先介紹字元界面同步時間方法。 首選安裝ntpdate 時間同步服務, 利用yum install ntpdate
2、接著把linux系統時間同步到windows time公共時間伺服器, ntpdate time.windows.com
3、設置時間同步腳本,雖然以上已經同步了時間,但是如果連不上網或者關機就不一樣的時間了。可以通過設置計劃任務,每天0點同步一下。
添加到crontab任務文件添加:00 0 1 * * root ntpate -s time.windows.com
4、除此之外,我們還可以通過用date命令查看 和手動設置系統時間(必須管理員賬號許可權。
圖形界面設置
1、如果對命令行不熟悉,也可以通過圖形界面設置來實現系統時間同步。 找到系統工具----管理員功能選項--- date\時間 和日期
2、啟用網路時間,並且與之同步找到date\time 時間菜單之後,勾選「synchronize date and time over the network 」
3、設置正確的當地時區,除此之外,centos系統會根據當期語言來設置默認的時間和時區。對於咗嚛所在的china時間,是北京時間(下面那個UTC時間不要勾)
『肆』 LINUX時間同步腳本或命令!
Linux
下
時間同步命令:
ntpdate
linux系統下默認安裝了ntp服務,手動進行ntp同步如下
$ntpdate
ntp1.nl.net
當然,也可以指定其它的ntp伺服器
公網上的NTP伺服器列表:
http://www.pool.ntp.org/zone/asia
根據這個列表,中國有個伺服器:cn.pool.ntp.org
用
ntpdate
命令來同步時間:
ntpdate
cn.pool.ntp.org
可以將這個命令加到
cron
table
裡面,每天執行。
『伍』 LINUX系統時間怎麼設置同步腳本或命令
使用crontab定時任務crontab-e進入編輯基本格式:*****command分時日月周命令第1列表示分鍾1~59每分鍾用*或者*/1表示第2列表示小時1~23(0表示0點)第3列表示日期1~31第4列表示月份1~12第5列標識號星期0~6(0表示星期天)第6列要運行的命令crontab文件的一些例子:3021***/usr/local/etc/rc.d/lighttpdrestart上面的例子表示每晚的21:30重啟apache。4541,10,22**/usr/local/etc/rc.d/lighttpdrestart上面的例子表示每月1、10、22日的4:45重啟apache。101**6,0/usr/local/etc/rc.d/lighttpdrestart上面的例子表示每周六、周日的1:10重啟apache。0,3018-23***/usr/local/etc/rc.d/lighttpdrestart上面的例子表示在每天18:00至23:00之間每隔30分鍾重啟apache。023**6/usr/local/etc/rc.d/lighttpdrestart上面的例子表示每星期六的11:00pm重啟apache。**/1***/usr/local/etc/rc.d/lighttpdrestart每一小時重啟apache*23-7/1***/usr/local/etc/rc.d/lighttpdrestart晚上11點到早上7點之間,每隔一小時重啟apache0114*mon-wed/usr/local/etc/rc.d/lighttpdrestart每月的4號與每周一到周三的11點重啟apache041jan*/usr/local/etc/rc.d/lighttpdrestart一月一號的4點重啟apache名稱:crontab使用許可權:所有使用者使用方式:crontabfile[-uuser]-用指定的文件替代目前的crontab。crontab-[-uuser]-用標准輸入替代目前的crontab.crontab-1[user]-列出用戶目前的crontab.crontab-e[user]-編輯用戶目前的crontab.crontab-d[user]-刪除用戶目前的crontab.crontab-cdir-指定crontab的目錄。crontab文件的格式:MHDmdcmd.M:分鍾(0-59)。H:小時(0-23)。D:天(1-31)。m:月(1-12)。d:一星期內的天(0~6,0為星期天)。cmd要運行的程序,程序被送入sh執行,這個shell只有USER,HOME,SHELL這三個環境變數說明:crontab是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。-uuser是指設定指定user的時程表,這個前提是你必須要有其許可權(比如說是root)才能夠指定他人的時程表。如果不使用-uuser的話,就是表示設定自己的時程表。參數:crontab-e:執行文字編輯器來設定時程表,內定的文字編輯器是VI,如果你想用別的文字編輯器,則請先設定VISUAL環境變數來指定使用那個文字編輯器(比如說setenvVISUALjoe)crontab-r:刪除目前的時程表crontab-l:列出目前的時程表crontabfile[-uuser]-用指定的文件替代目前的crontab。時程表的格式如下:f1f2f3f4f5program其中f1是表示分鍾,f2表示小時,f3表示一個月份中的第幾日,f4表示月份,f5表示一個星期中的第幾天。program表示要執行的程序。當f1為*時表示每分鍾都要執行program,f2為*時表示每小時都要執行程序,其餘類推當f1為a-b時表示從第a分鍾到第b分鍾這段時間內要執行,f2為a-b時表示從第a到第b小時都要執行,其餘類推當f1為*/n時表示每n分鍾個時間間隔執行一次,f2為*/n表示每n小時個時間間隔執行一次,其餘類推當f1為a,b,c,時表示第a,b,c,分鍾要執行,f2為a,b,c,時表示第a,b,c個小時要執行,其餘類推使用者也可以將所有的設定先存放在檔案file中,用crontabfile的方式來設定時程表。例子:#每天早上7點執行一次/bin/ls:07***/bin/ls在12月內,每天的早上6點到12點中,每隔3個小時執行一次/usr/bin/backup:06-12/3*12*/usr/bin/backup周一到周五每天下午5:00寄一封信給[email protected]:017**1-5mail-s"hi"[email protected]/dev/null2>&1即可例子2:#每天早上6點10分106***date#每兩個小時0*/2***date#晚上11點到早上8點之間每兩個小時,早上8點023-7/2,8***date#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點0114*mon-weddate#1月份日早上4點041jan*date範例$crontab-l列出用戶目前的crontab。
『陸』 linux怎麼讓系統時間硬體時間同步
Centos系統,必須同時修改系統時間和硬體時間,才可以保證修改有效,單純的使用date命令修改系統時間,是立即生效,重啟後系統還原。具體操作如下:
1.date {查看目前本地的時間}
2.hwclock --show {查看硬體的時間}
3.如果硬體時間和系統時間不同,那就對硬體的時間進行修改
4.hwclock --set --date '014-12-15 15:15:15' {設置硬體時間為14年12月15日15點15分15秒}
5.hwclock --hctosys {設置系統時間和硬體時間同步}
6.clock -w {保存時鍾}
『柒』 Linux集群系統時間同步
環境准備:
要做到伺服器集群的時間同步,集群中各台機器的時區必須相同的,我們在國內就使用中國時區,如果你的機器的時區不是"Asia/Shanghai",需要修改時區
CentOS 中時區是以文件形式存在,當前正在使用的時區文件位於
/etc/localtime ,其他時區文件則位於 /usr/share/zoneinfo 下,中國時區的文件全路徑是 /usr/share/zoneinfo/Asia/Shanghai
要更改時區,直接使用如下命令就OK
需要使用 tzselect 命令去生成時區文件,生成好的時區文件就在/usr/share/zoneinfo 目錄下,具體步驟去下:
使用 date -s 命令來修改系統時間
讓集群所有的伺服器的時間同步,就用遠程連接工具連接所有伺服器,然後在所有的伺服器中同時執行 date -s 命令設置時間,然後在所有的伺服器中執行 hwclock -w 命令即可
美國標准技術院時間伺服器:time.nist.gov(192.43.244.18)
上海交通大學網路中心NTP伺服器地址:ntp.sjtu.e.cn(202.120.2.101)
中國國家授時中心伺服器地址:cn.pool.ntp.org(210.72.145.44)
若以上提供的網路時間伺服器不可用,請自行上網尋找可用的網路時間伺服器
<1> 使用命令: crontab -e
<2> 然後往裡加入一行內容
上面的配置表示,每隔十分鍾從 202.120.2.101 該時間伺服器同步一次時間。
<3> 保存退出
以上兩步操作可以讓node01這個伺服器每隔10分鍾去指定的伺服器同步時間,如果需要讓集群中的所有伺服器(hadoop01-hadoop04)時間同步,那麼每台伺服器都要做以上兩步操作。
node01的IP為192.168.21.101,讓它作為時間伺服器,192.168.21.0區域網內的所有伺服器都向它同步時間,而node01這台時間伺服器本身,向外網時間伺服器同步時間(比如中國國家授時中心伺服器)
我用node01
我去掉了所有的默認注釋,對其中的修改寫了自己的注釋,沒有寫注釋的是默認配置
因為ntpd服務開啟之後,就不能手動同步時間了,那麼為什麼要先手動同步時間呢?
當server(中國國家授時中心伺服器)與client(node01)之間的時間誤差過大時(可能是1000秒),node01去同步時間可能對系統和應用帶來不可預知的問題,node01將停止時間同步!所以如果發現node01啟動之後時間並不進行同步時,應該考慮到可能是時間差過大引起的,此時需要先手動進行時間同步!
看到紅色框中的內容,表示連接和監聽已正確
這里的前4行就是我們配置的4個中國國家授時中心的伺服器的信息
最後一行就是本地時間服務的信息
下面對每個列的意義進行說明:
同樣,服務啟動後需要等待5-10分鍾才能看到這個正常的信息
到這里,我們區域網內的時間伺服器node01就已經配置完畢了
文件內容如下:
同樣,沒有寫注釋的都是默認的配置
原因同(5)
到這里,利用區域網內一台時間伺服器來同步整個集群時間的全部配置就已經完成
說明:若以上提供的網路時間伺服器不可用,請自行上網尋找可用的網路時間伺服器,另外需要關閉各伺服器的防火牆,才能進行時間同步
參考文章:
內網環境NTP服務及時間同步(CentOS6.x)配置和部署
配置NTP服務ntpd/ntp.conf(搭建Hadoop集群可參考)
『捌』 linux硬體時間與系統時間同步
方法/步驟
打開Ubuntu虛擬機,在桌面空白處右鍵 -- 打開終端。
『玖』 linux系統時鍾同步命令
1. date命令
#date 查看系統時間
#date -set 「10/30/20 11:30」 設置月/日/年/ 時:分:秒
2.clock命令
#clock -show 查看硬體時間
3.硬體時間和系統時間同步
重新啟動系統,硬體時間會讀取系統時間,實現同步。
但是,不重啟的情況下,需要用clock命令實現同步。
#clock -systohc
『拾』 如何用linux一台伺服器時間去同步其他伺服器的時間
至少需要兩台linux伺服器,其中一台是NTP Server, 另一台是NTP client.
Linux NTP配置詳解 (Network Time Protocol)
LINUX絕大多數的發行版本都已經自帶了NTP程序,只須按以下配置即可。
相關配置文件
/etc/ntp.conf
NTP服務的主要配置文件,所有的更改全部在這里。
/usr/share/zoneinfo
由 tzdata 所提供,規定了各主要時區的時間設定文件,例如中國的時區設置文件是/usr/share/zoneinfo/Asia/Chongqing。
/etc/sysconfig/clock
Linux的主要時區設定文件。每次啟動後Linux操作系統會自動讀取這個文件來設定系統預設要顯示的時間。如這個文件內容為」ZONE=Asia/Chongqing」,則表示Linux操作系統的時間設定使用/usr/share/zoneinfo/Asia/Chongqing這個文件。
/etc/localtime
本地系統的時間設定文件,如果clock文件中規定了使用的時間設定文件為/usr/share/zoneinfo/Asia/Chongqing,Linux操作系統就會將Chongqing那個文件復制一份為/etc/localtime,所以系統的時間顯示就會以Chongqing那個時間設定文件為准。
相關的命令
/bin/date
這個我們最經常使用了,更改及輸出日期與時間命令。
/sbin/hwclock
使用hwclock才能將修改過後的時間寫入BIOS 。
/usr/sbin/ntpd
NTP服務的守護進程,配置文件為/etc/ntp.conf 。
/usr/sbin/ntpdate
用來連接NTP伺服器命令,比如ntpdate 192.168.6.51 。
/usr/sbin/ntpq
NTP查詢命令。
設置NTP伺服器
就如前邊說的NTP配置文檔只有一個 /etc/ntp.conf,看看我的ntp.conf
#紅字的是我添加的,其它為默認!
grep -Ev '^$|^#' /etc/ntp.conf
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 131.107.13.100 //允許該NTP伺服器進入
restrict 114.80.81.1 //沒有任何何參數的話,這表示『該 IP或網段不受任何限制』
restrict 202.118.1.199
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.0.0 mask 255.255.0.0 nomodify //該網段可以進行校時
restrict 0.0.0.0 mask 0.0.0.0 notrust //拒絕沒有認證的用戶端
server time-nw.nist.gov prefer //prefer 該伺服器優先
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
別忘了啟動NTP伺服器
/etc/init.d/ntp start
客戶端測試
對了客戶端只需要是用ntpdate命令即可,192.168.6.51 為ntp 伺服器ip 地址,就這么就簡單!
相關命令
ntpstat //列出我們的NTP 伺服器是否與上層連接。
synchronised to NTP server (131.107.13.100) at stratum 2
time correct to within 461 ms
polling server every 64 s
ntpq -p //列出目前我們的NTP伺服器 與上層NTP伺服器 的狀態,* 代表目前正在使用的上層 NTP伺服器
remote refid st t when poll reach delay offset jitter
==============================================================================
*131.107.13.100 .ACTS. 1 u 30 64 67 237.165 1.539 20.382
202.118.1.199 202.112.31.197 2 u 33 64 63 163.526 91.844 10.208
上邊只是簡單設置,沒有考慮安全方面如認證等等,如需更詳細請參考這里。
許可權管理使用 restrict 公式如下:
restrict IP mask [參數] / restrict 192.168.0.0 mask 255.255.0.0 nomodify
其中參數主要有底下這些:
* ignore:拒絕所有類型的NTP的連線;
* nomodfiy:用戶端不能使用NTPC與ntpq這兩支程式來修改伺服器的時間參數,但使用者端仍可透過這部主機來進行網路校時的;
* noquery:用戶端不能夠使用ntpq,NTPC等指令來查詢發表伺服器,等於不提供的NTP的網路校時冪;
* notrap:不提供陷阱這個遠端事件郵箱(遠程事件日誌)的功能。
* notrust:拒絕沒有認證的用戶端。