調整 Linux 的作業系統時間

分類: 技術分享 作者: andrew

8 4 月 2009

緣起

在家用電腦上,因為大部分用的是windows的桌面系統,要調整系統時間相當簡單,
不論是手動直接對右下角的時間按左鍵兩下去調整,或是去下載網路校時程式NTPClock,執行程式透過網路來調整系統時間。假使今天要調整的是像debian這樣like unix,只有文字介面的系統主機又該怎麼做呢?其實我們可以有兩種方式來處理,以下來說明這兩種的用法。

手動方式

sudo date -s 2007/12/03
sudo date -s 17:02:07
sudo hwclock --systohc --utc

第一行與第二行分別設定年月日時分秒,第三行的意思是把我們設定的時間寫入到bios裡面,也就是把系統時間跟硬體bios的時間做同步。假使在執行第三行時出現以下錯誤:

select() to /dev/rtc to wait for clock tick timed out

可以試試看加上 --directisa 參數 ,也就是:

sudo hwclock --systohc --utc --directisa

ntpdate

在Linux 的環境當中可利用內建的用戶端程式ntpdate來跟ntp server連線做系統時間的同步。以debian為例,可以執行以下語法來做同步處理:

sudo ntpdate time.stdtime.gov.tw
sudo hwclock -w

第一行的time.stdtime.gov.tw是ntpserver,也就是我們要把系統時間跟這個伺服器做同步,以下為幾個比較常用的ntpserver:

time.stdtime.gov.tw
clock.stdtime.gov.tw
tick.stdtime.gov.tw
tock.stdtime.gov.tw
watch.stdtime.gov.tw

第二行表示把我們調整好的時間同步更新到bios,與手動方式的意思是相同的。

總結

以上介紹的兩種方式其實都有他的缺點。手動方式因為是手動輸入時間,所以難免會有誤差幾秒的情況;ntpdate的方式則必須主機有對外可以通的網路才能使用。網站主機的系統時間往往會影響到很多層面,比如購物網站的訂單時間,或者是資料交換執行的時間,其影響往往是事後在補救都是很棘手的事。由於系統時間常常因不明原因的變快或變慢(以變慢的情況比較常見), 因此把文章中介紹的指令寫到cron去執行也不失為一個管理主機系統上更為便利的方法。

參考

鳥哥的Linux私房菜 http://linux.vbird.org/linux_server/0440ntp.php

補充-ntpdate原始碼模式安裝步驟

參考網址 http://weber.tn.edu.tw/sammy/net_pbm/ntpdate.htm
1.到http://www.ntp.org/downloads.html下載release檔案

wget ftp://ftp.udel.edu/pub/ntp/ntp4/ntp-4.2.4p7-RC2.tar.gz

2.把壓縮檔解壓縮

tar zxvf ntp-4.2.4p7-RC2.tar.gz

3.開始編譯

cd ntp-4.2.4p7-RC2
./configure
make
make install

即安裝完成。
4.建議可把校時動作放到cron裡定時執行,參考語法如下:

*/30 * * * * /usr/local/bin/ntpdate time.stdtime.gov.tw

表示每30分鐘與ntp-server執行校時動作。

1 Response to 調整 Linux 的作業系統時間

Avatar

jaceju

4 月 10th, 2009 at 9:59 上午

昨天才討論完,今天就遇到了客戶多部伺服器時間不同步的問題。 XD

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。