對(duì)于許多與系統(tǒng)相關(guān)的任務(wù)和進(jìn)程,使用正確的時(shí)區(qū)是必不可少的。例如,cron守護(hù)進(jìn)程使用系統(tǒng)的時(shí)區(qū)執(zhí)行cron作業(yè),日志文件中的時(shí)間戳基于同一系統(tǒng)的時(shí)區(qū)。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了井岡山免費(fèi)建站歡迎大家使用!
環(huán)境
Centos 8
檢查現(xiàn)在的時(shí)區(qū)
timedatectl是一個(gè) 命令 行實(shí)用程序,允許您查看和更改系統(tǒng)的時(shí)間和日期。
[root@localhost ~]# timedatectl
? ? ? ? ? Local time: Tue 2020-03-31 16:35:23 CST
? ? ? Universal time: Tue 2020-03-31 08:35:23 UTC
? ? ? ? ? ? RTC time: Tue 2020-03-31 08:35:23
? ? ? ? ? ? Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
? ? ? ? ? NTP service: active
? ? ? RTC in local TZ: no
更改時(shí)區(qū)
在更改時(shí)區(qū)之前,您需要找出要使用的時(shí)區(qū)名稱。要列出所有可用時(shí)區(qū),請(qǐng)使用下面的 命令 :
[root@localhost ~]# timedatectl list-timezones
…
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk
…
然后使用set-timezone選項(xiàng)更改時(shí)區(qū),比如更改為Europe/Berlin:
[root@localhost ~]# timedatectl set-timezone Europe/Berlin
使用創(chuàng)建鏈接的方式更改時(shí)區(qū)
如果運(yùn)行的是舊版本的Centos,比如Centos6之前的版本,并且系統(tǒng)上不存在timedatectl命令,則可以通過將/etc/localtime符號(hào)鏈接到/usr/share/zoneinfo目錄中的時(shí)區(qū)文件來(lái)更改時(shí)區(qū)。
查看一下/usr/share/zoninfo下面的時(shí)區(qū)文件,
[root@localhost ~]# ls /usr/share/zoneinfo/
[root@localhost ~]# ls /usr/share/zoneinfo/Asia/
現(xiàn)在替換時(shí)區(qū)文件。
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@localhost ~]# date
Tue Mar 31 16:53:59 CST 2020
可以看到已經(jīng)切換到了CST中國(guó)標(biāo)準(zhǔn)時(shí)間
總結(jié)
在本文中,使用了兩種方式修改時(shí)區(qū)。一種是使用timedatectl,另一種方式使用創(chuàng)建鏈接的方式。
date -s “20181121 17:34:00”
輸入這條命令系統(tǒng)時(shí)間會(huì)設(shè)置為2018年11月21日17點(diǎn)39分。
修改之后你可以輸入date命令查詢當(dāng)前時(shí)間。
擴(kuò)展資料:
1、桌面右上角齒輪按鈕,點(diǎn)擊System Settings。
2、彈出窗口選擇Time Date。
3、Time Date界面有一個(gè)世界地圖,通過點(diǎn)擊相應(yīng)的地點(diǎn)即可選擇時(shí)區(qū)。
4、通過下方的選擇按鈕,可以選擇手動(dòng)設(shè)置時(shí)間或從互聯(lián)網(wǎng)獲取時(shí)間。
我們一般使用“date -s”命令來(lái)修改系統(tǒng)時(shí)間。比如將系統(tǒng)時(shí)間設(shè)定成1996年6月10日的命令如下。
#date -s 06/10/96
將系統(tǒng)時(shí)間設(shè)定成下午1點(diǎn)12分0秒的命令如下。
#date -s 13:12:00
注意,這里說的是系統(tǒng)時(shí)間,是linux由操作系統(tǒng)維護(hù)的。
在系統(tǒng)啟動(dòng)時(shí),Linux操作系統(tǒng)將時(shí)間從CMOS中讀到系統(tǒng)時(shí)間變量中,以后修改時(shí)間通過修改系統(tǒng)時(shí)間實(shí)現(xiàn)。為了保持系統(tǒng)時(shí)間與CMOS時(shí)間的一致性,Linux每隔一段時(shí)間會(huì)將系統(tǒng)時(shí)間寫入CMOS。由于該同步是每隔一段時(shí)間(大約是11分鐘)進(jìn)行的,在我們執(zhí)行date -s后,如果馬上重起機(jī)器,修改時(shí)間就有可能沒有被寫入CMOS,這就是問題的原因。如果要確保修改生效可以執(zhí)行如下命令。
#clock -w
這個(gè)命令強(qiáng)制把系統(tǒng)時(shí)間寫入CMOS
請(qǐng)采納。
修改系統(tǒng)時(shí)間。
linux系統(tǒng)時(shí)鐘有兩個(gè),一個(gè)是硬件時(shí)鐘,即BIOS時(shí)間,就是我們進(jìn)行CMOS設(shè)置時(shí)看到的時(shí)間,另一個(gè)是系統(tǒng)時(shí)鐘,是linux系統(tǒng)Kernel時(shí)間。當(dāng)Linux啟動(dòng)時(shí),系統(tǒng)Kernel會(huì)去讀取硬件時(shí)鐘的設(shè)置,然后系統(tǒng)時(shí)鐘就會(huì)獨(dú)立于硬件運(yùn)作。有時(shí)我們會(huì)發(fā)現(xiàn)系統(tǒng)時(shí)鐘和硬件時(shí)鐘不一致,因此需要執(zhí)行時(shí)間同步,下面就分享一下時(shí)間設(shè)置及時(shí)鐘同步的命令使用方法。
date命令將日期設(shè)置為2014年6月18日
----?? date -s 06/18/14
將時(shí)間設(shè)置為14點(diǎn)20分50秒
----?? date -s 14:20:50
將時(shí)間設(shè)置為2014年6月18日14點(diǎn)16分30秒(MMDDhhmmYYYY.ss)
----date 0618141614.30
請(qǐng)點(diǎn)擊輸入圖片描述
hwclock/clock 命令查看、設(shè)置硬件時(shí)間
查看系統(tǒng)硬件時(shí)鐘
hwclock? --show 或者
clock? --show
設(shè)置硬件時(shí)間
hwclock --set --date="06/18/14 14:55" (月/日/年時(shí):分:秒)或者# clock --set --date="06/18/14 14:55" (月/日/年時(shí):分:秒)
同步系統(tǒng)及硬件時(shí)鐘。
下圖中可以看到硬件和系統(tǒng)時(shí)鐘相差半小時(shí)??梢允褂胔wclock或者clock進(jìn)行同步,
硬件時(shí)鐘與系統(tǒng)時(shí)鐘同步:
# hwclock --hctosys 或者 # clock --hctosys? hc代表硬件時(shí)間,sys代表系統(tǒng)時(shí)間,即用硬件時(shí)鐘同步系統(tǒng)時(shí)鐘
系統(tǒng)時(shí)鐘和硬件時(shí)鐘同步:
# hwclock --systohc或者# clock --systohc? 即用系統(tǒng)時(shí)鐘同步硬件時(shí)鐘
請(qǐng)點(diǎn)擊輸入圖片描述
請(qǐng)點(diǎn)擊輸入圖片描述
請(qǐng)點(diǎn)擊輸入圖片描述
查看時(shí)區(qū)
cat /etc/sysconfig/clock
設(shè)置時(shí)區(qū)
tzselect
timeconfig
cat /etc/sysconfig/clock ZONE=”Asia/Shanghai” — /usr/share/zoneinfo 下面的文件。 UTC=false — 硬件時(shí)鐘是否為 UTC 或者說 GMT 時(shí)鐘。 ARC=false — 如果是在 Alpha 機(jī)器上,則設(shè)置為 true 。
把硬件時(shí)鐘設(shè)置為 UTC 的好處就是他能自動(dòng)設(shè)置夏時(shí)制,缺點(diǎn)是,在安裝有多重操作系統(tǒng)啟動(dòng)的機(jī)器上,在另外的操作 系統(tǒng)上時(shí)鐘會(huì)錯(cuò)誤。
Linux 的時(shí)鐘設(shè)置文件為:/etc/localtime ,實(shí)際上這個(gè)文件是 /usr/share/zoneinfo 目錄下對(duì)應(yīng)文件的符號(hào)連接。 假設(shè)我們所處的地區(qū)位于上海,那么只要運(yùn)行以下的命令就可以設(shè)置時(shí)區(qū)了。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Linux 啟動(dòng)時(shí),其中的一個(gè)腳本(/etc/rc.d/rc.sysinit)會(huì)運(yùn)行 /sbin/hwclock 程序,把當(dāng)前的硬件時(shí)鐘復(fù)制為系統(tǒng) 時(shí)間。hwclock 假定硬件時(shí)鐘已經(jīng)設(shè)置為本地時(shí)鐘,除非帶有 –utc 參數(shù)。腳本文件會(huì)讀取 /etc/sysconfig/clock 文 件的設(shè)置,因此我們不需要修改腳本,直接修改這個(gè)配置文件就可以了,根據(jù)需要把其中的 UTC 行,設(shè)置為 true 或 者 false。
設(shè)置硬件時(shí)鐘時(shí),首先使用 date 命令(“date MMDDhhmmYYYY.ss”) 設(shè)置好系統(tǒng)時(shí)鐘,然后使用 “/sbin/hwclock –systohc” 把硬件時(shí)鐘設(shè)置為和當(dāng)前系統(tǒng)時(shí)間一致。
如果你在某些應(yīng)用下面的時(shí)間是錯(cuò)誤的,那么你在運(yùn)行 Red Hat Linux 5.0 或 5.1,解決的辦法是建立 /usr/lib/zoneinfo 到 /usr/share/zoneinfo 的符號(hào)連接:
ln -s /usr/share/zoneinfo /usr/lib/zoneinfo
小結(jié):時(shí)鐘設(shè)置的問題本身比較簡(jiǎn)單,但是它涉及到幾個(gè)基本的配置文件:
/etc/rc.d/rc.sysinit /etc/sysconfig/clock /etc/localtime /usr/share/zoneinfo時(shí)區(qū)的配置文件是/etc/sysconfig/clock。用tzselect命令就可以修改這個(gè)配置文件,根據(jù)命令的提示進(jìn)行修改就好了。 但是在實(shí)際工作中,發(fā)現(xiàn)這種方式是不能夠使得服務(wù)器上的時(shí)間設(shè)置馬上生效的,而且使用ntpdate去同步時(shí)間服務(wù)器也不能夠更改時(shí)間。即使你使用了date命令手工設(shè)置了時(shí)間的話,如果使用ntpdate去進(jìn)行時(shí)間同步的話,時(shí)間又會(huì)被改動(dòng)到原來(lái)的錯(cuò)誤時(shí)區(qū)的時(shí)間。而生產(chǎn)的機(jī)器往往是非常重要的,不能夠進(jìn)行重啟等操作。 在網(wǎng)上找了幾種方法試了下,發(fā)現(xiàn)如果要修改時(shí)區(qū)并且馬上生效,可以更換/etc/localtime 文件來(lái)實(shí)現(xiàn)。比如我的時(shí)區(qū)是中國(guó)上海,那么就可以使用如下的命令來(lái)使得時(shí)區(qū)的更改生效。 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 然后最好使用下面的命令將更改寫入bios。