以Linux服務器時間為中心,如何觀測和調整系統時間?
當前,在現代網絡與技術的時代,Linux 服務器亦存在其他的感知與挑戰。特別是系統的時間同步,這更是 Linux 服務器常遇到的有關困難之一。準確、同步的時間是服務器進行正常操作的要求之一,尤其對于一些精確計時的任務,時間的同步就更為重要。那么,在這篇文章中我們著重講解以 Linux 服務器時間為中心,如何觀測和調整系統時間。
1、時間同步
不同的 Linux 發行版固然存在許多相同的內核功能和支撐,但它們仍舊可能存在一定的扭曲。畢竟一些不同 Linux 發行版的配置與支持,如時間同步設置,還是存在少量差異的。在 Linux 中,為了保證時間的精確度,操作系統一般依賴一個叫做 NTP(Network Time Protocol,網絡時間協議)的網絡時間協議。NTP 是一個開放的、可伸縮的時間同步解決方案,可以克服網絡的延遲、抖動誤差及時鐘偏差等現象,統一設備時間,以滿足精確的時間要求。
在需要使用 NTP 服務的機器上,必須提前安裝 NTP。而在 Linux 發行版中,經常有較為相似的安裝流程。在 Ubuntu 中,可以用以下命令安裝 NTP 服務:
```
sudo apt-get install ntpdate
```
如果你使用 CentOS,則可以使用以下命令安裝:
```
sudo yum install ntp
```
接下來,必須將該服務器的時間與網絡的時間進行同步。可以使用以下命令進行手動授時:
```
ntpdate time.nist.gov
```
2、時間查看
有時候,我們需要手動查看當前 Linux 系統的時間輸入以下命令:```
date
```
該命令將返回系統的當前日期和時間,通常格式如下:
```
Sat Jan 25 14:22:55 EST 2020
```
在這個樣例中,“Sat Jan 25 14:22:55 EST 2020” 是表示當前時間的字符串,其中日期是“Jan 25(1月25日)”, 時間是“14:22:55(下午 2:22:55)”,時區是 EST 美國東部標準時間。在只查看日期或時間時,還可以使用其他的格式化選項。例如,要顯示當前時間的小時、分鐘和秒:
```
date +%T
```
3、系統時間調整
在確保了時間同步之后,就可以對 Linux 系統的時間進行調整。要升高或降低時鐘計數器,系統管理員可以使用 date 命令。例如,如果想將時間提高 30 秒,可執行以下命令:
```
sudo date +%s -s "$(($(date +%s)+30))"
```
如果要將時間回調 5 分鐘,可執行以下命令:
```
sudo date +%s -s "$(($(date +%s)-300))"
```
需要注意,時間設置的正確性對系統穩定性和數據完整性有重要影響。
4、硬件時鐘與系統時鐘
在 Linux 上,通常有硬件時鐘(RTC)和系統時鐘(Softclock)集成兩種時鐘。硬件時鐘通常是由計算機 BIOS 控制,在 Linux 啟動時由內核讀取,因此硬件時鐘只在系統準備關機時更新。系統時鐘由內核控制,它產生和維護當前時間的所有用處。
但是在硬件時鐘與軟件時鐘同步方面,存在問題的通常是在硬件時鐘使用錯誤的時區。由于硬件時鐘通常無法詳細設置,這時需要在 Linux 系統啟動時記錄正確的硬件時鐘時間和方區。
在"/etc/sysconfig/clock" 的最后幾行中,可以檢查時鐘設置:
```
ZONE="Australia/Sydney" UTC=true ARC=false
```
將 systemd 啟動服務配置文件 /etc/systemd/system.conf 配置為使用 local RTC 設置硬件時鐘。
```
[Time]
...
# Use RTC (Real-Time Clock) as a boot clock source (only for systems that support it).
# Note that this requires exposing the RTC device to user mode, which is by default not done
# on modern systems. systemd-tmpfiles-setup.service(8) will attempt to create the required
# device nodes by itself unless CONFIG_RTC_SYSTOHC is disabled at build-time.
#Set only if you want to use RTC for clock synchronization.
#Otherwise uses NTP synchronization (default).
#Defaulf value is "no".
#To enable RTC synchronization, you need to make sure that /run/systemd/ntp-units.d/ directory exists.
#This is created by systemd-tmpfiles-setup.service(8). If the directory doesnt exist
#it can be created manually or by running this command:
# systemd-tmpfiles --create --prefix /run/systemd/ntp-units.d/
ForceLocalRTC=yes
...
```
后面的代碼 ForceLocalRTC=yes 就是啟用了硬件時鐘。
最后,總結一下本文講述的內容:我們首先講解了時間同步的原理和方法,在 Linux 系統中使用 NTP 服務來進行時間同步;然后我們介紹了時間查看命令,可以手動查看當前 Linux 系統的時間;接著我們闡述了如何進行系統時間調整,管理員可以使用 date 命令來升高或降低時鐘計數器;最后,我們涉及兩種時鐘:硬件時鐘和系統時鐘,Linux 系統將兩種時間進行整合管理,并且進行相應的配置。
雖然時間調整看上去是一件簡單、輕松的操作,但在實際操作中仍需要考慮到多方面的因素,保證系統時鐘的正確性與穩定性。因此,我們建議大家在進行時間調整操作之前,首先了解相關配置和設置。
在實際的 Linux 服務器運行中,時間同步也是一個非常重要的問題,管理員必須事先了解和熟練掌握時間同步這個重要的技術點。只有做好時間同步,才能保證服務器時間的準確和整個 Linux 系統的穩定性。