iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
IT管理

Rocky Linux 8:系統管理與維運實戰系列 第 20

第14章:設定系統時區與時間

前言

本篇文章,是要設定系統的時區與時間,並維護時區與時間的設定。

設定本地時間與時區

作業系統的時間之校正是很重要的,原因是有些服務都需要取得系統的時間,若時間不對的話,很難去知道發生問題的時間點,舉個例子,像是作業系統在寫入日誌檔案的時候,就需要取得系統時間,來記錄什麼時候發生的訊息,若是系統時間有錯誤的話,就不知道什麼時候發生錯誤了。設定本地端的時間與時區,可以使用timedatectl這個指令做到,相關的用法如下:

[rockylinux@workstation ~]$ timedatectl
               Local time: Thu 2021-10-07 00:51:19 CST
           Universal time: Wed 2021-10-06 16:51:19 UTC
                 RTC time: Wed 2021-10-06 16:51:17
                Time zone: Asia/Taipei (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[rockylinux@workstation ~]$

從上述輸出的指令可以得知,顯示很多不同種類時間下所取得的時間,從上而下之解釋如下:

  • Local time,指的是目前當下系統上面所設定的時間。
  • Universal time,指的是目前當下系統的UTC時間。
  • RTC time,實時時鐘,意思就是硬體上面的時間,主機板上會有一個晶片,裡面就是實時時鐘,並靠CMOS電池進行供電。
  • Time zone,時區,這邊設定為:Asia/Taipei,即UTC+8。
  • System clock synchronized,指的是系統時鐘同步設定,設定值顯示為開啟。
  • NTP service,指的是NTP服務狀態,NTP是網路時間協定,可以透過此網際網路協定來進行校時。
  • RTC in local TZ,是否有硬體同步本地時間,這裡設定是沒有,即作業系統上的時間與RTC硬體上的時間可能會不同。

若要知道所有的時區清單的話,則可以使用list-timezones參數來觀看,下列為此指令執行所輸出的訊息:

[rockylinux@workstation ~]$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Juba
Africa/Kampala
lines 1-27

由於世界上的時區清單很多,因此當執行上述的指令之後,則會進入閱讀器模式,如同之前的一些指令一樣,按下「q」即可以離開此閱讀器,方向之上下鍵則是畫面控制往上還是往下。

若要修改時區的話,則可以使用set-timezone之參數來做到,相關的指令執行輸出的訊息如下:

[rockylinux@workstation ~]$ sudo timedatectl set-timezone Asia/Tokyo
[sudo] password for rockylinux:
[rockylinux@workstation ~]$ timedatectl
               Local time: Thu 2021-10-07 02:06:45 JST
           Universal time: Wed 2021-10-06 17:06:45 UTC
                 RTC time: Wed 2021-10-06 17:06:43
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[rockylinux@workstation ~]$

從上述執行指令所輸出的訊息可以得知,首先先將系統時區改成Asia/Tokyo,接著再執行timedatectl指令則會發現有關於系統時間的資訊就被改成比台灣的時間快1小時了。若要以互動式方式找到時區也是可以的,可以使用tzselect來做到,相關的指令執行後所輸出的訊息如下:

[rockylinux@workstation ~]$ sudo tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Asia
 5) Atlantic Ocean
 6) Australia
 7) Europe
 8) Indian Ocean
 9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.
#? 4
Please select a country whose clocks agree with yours.
 1) Afghanistan           18) Israel                35) Palestine
 2) Armenia               19) Japan                 36) Philippines
 3) Azerbaijan            20) Jordan                37) Qatar
 4) Bahrain               21) Kazakhstan            38) Russia
 5) Bangladesh            22) Korea (North)         39) Saudi Arabia
 6) Bhutan                23) Korea (South)         40) Singapore
 7) Brunei                24) Kuwait                41) Sri Lanka
 8) Cambodia              25) Kyrgyzstan            42) Syria
 9) China                 26) Laos                  43) Taiwan
10) Cyprus                27) Lebanon               44) Tajikistan
11) East Timor            28) Macau                 45) Thailand
12) Georgia               29) Malaysia              46) Turkmenistan
13) Hong Kong             30) Mongolia              47) United Arab Emirates
14) India                 31) Myanmar (Burma)       48) Uzbekistan
15) Indonesia             32) Nepal                 49) Vietnam
16) Iran                  33) Oman                  50) Yemen
17) Iraq                  34) Pakistan
#? 43

The following information has been given:

        Taiwan

Therefore TZ='Asia/Taipei' will be used.
Selected time is now:   Thu Oct  7 01:12:16 CST 2021.
Universal Time is now:  Wed Oct  6 17:12:16 UTC 2021.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
        TZ='Asia/Taipei'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /bin/tzselect command in shell scripts:
Asia/Taipei

一開始會選擇要設定時區在哪一洲,假設在亞洲,則選擇Asia,即選擇「4」,接著就會有所有亞洲國家列出,再選擇國家,這邊選擇Taiwan為例子,即選擇「43」,接著會輸出是否得到的時區字串正確,若是正確的話就輸入「1」,最後就是輸出一些如何設定這個時區的方式了。

設定與監控Chronyd服務

因為RockyLinux 8開始,相對於RHEL 8,在之前的版本;如6與7版,都沒有Chrony這個服務來設定NTP伺服器來設定時間與校時,到了8開始之後,都是以chronyd這個服務為主。相關的設定檔案都在:/etc/chrony.conf,使用root使用者並以vim指令開啟設定檔,相關執行指令所輸出的訊息如下:

[rockylinux@workstation ~]$ sudo vim /etc/chrony.conf
[sudo] password for rockylinux:

接著可以看到前三行的設定內容,相關的內容如下:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.pool.ntp.org iburst

從上述的設定來看,前二行註解說明已經講得很清楚,就是這裡的設定的是有關於網路上公開的NTP伺服器,在台灣也有幾個公開的NTP伺服器,假設使用這個公開的NTP伺服器:time.stdtime.gov.tw,修改過的設定內容如下:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server time.stdtime.gov.tw iburst

設定完成之後,存檔離開,接著將chronyd背景服務使用systemctl之指令進行重啟,相關執行指令的方式與輸出的訊息如下:

[rockylinux@workstation ~]$ sudo systemctl restart chronyd
[sudo] password for rockylinux:
[rockylinux@workstation ~]$

接著可以使用chronyc sources -v指令來確定是否設定的NTP伺服器已經與本地端系統同步完成,相關指令執行輸出的訊息如下:

[rockylinux@workstation ~]$ sudo chronyc sources -v
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 118-163-81-61.hinet-ip.h>     2   6    37    32    -80us[ +918us] +/-   29ms
[rockylinux@workstation ~]$

課後練習

  • 請開啟VirtualBox並開啟「workstation」虛擬機器,並以rockylinux使用者進行登入,並開啟終端機。
  • 將此作業系統設定成時區為:「Asia/Taipei」。
  • 設定NTP伺服器為:tick.stdtime.gov.tw,並確定此作業系統已經與設定的NTP伺服器進行同步了。

上一篇
第13章:分析、儲存與存取系統日誌介紹(二)
下一篇
第15章:管理與設定網路介紹(一)
系列文
Rocky Linux 8:系統管理與維運實戰23

尚未有邦友留言

立即登入留言