天天看點

FreeBSD配置系統時間

對于網絡作業系統來講,由于要向多個客戶提供服務,是以必須擁有一個精确的系統時間。可以使用date指令來顯示目前的時間:

date

date指令按中文方式輸出的前提是指定環境變量LC_ALL為zh_CN.UTF-8,這是用于本地化的一種标準方式。

由于用于Internet上的網絡作業系統的客戶可能來自世界的不同地區,是以時間系統必須能辨別出不同的時區。計算機中的CMOS時間能設定為兩種不同的時間,一種是将CMOS時間設定為格林威治标準時間,使用時區修正給出本地時區的正确時間,另一種方法是将CMOS時間設定為本地時區時間,再使用本地時區修正得到格林威治标準時間。這樣系統和其他計算機通信時就能使用标準時間,避免不同時區的計算機時間的差異。

系統安裝程式在進行時區設定時将詢問使用者使用那種時間設定方式及時區設定,系統安裝完成之後,也可以直接使用tzsetup指令來設定時區資訊。所有的時區資訊儲存在/usr/share/zoneinfo目錄中,而本機的時區設定資訊儲存在/etc/localtime檔案中。此外,每個使用者也可以使用環境變量TZ來設定與系統不同的時區,這個設定将覆寫系統的設定。

root使用者可以使用帶參數date來更改系統時間,例如,以下指令将時間設定為1999年3月1日,下午1點54分:

date 9903011354

可以看出時間格式為年、月、日、時、分,每個各占兩個數字,其形式即為yymmddhhmm,大部分情況下是對時間進行小調整,可以略去前面的年月日部分,而僅使用四位數字表示時、分,形如hhmm。

通過Internet同步時間。手工設定時間一方面不友善,另一方面也依賴于本地管理者的時鐘的正确性,那麼網絡上不同的管理者管理的計算機時間必然有偏差,不同計算機的時間偏差就會對一些要求時間同步的服務産生影響。解決這種問題的方法很簡單,連接配接到一個能提供精确時間的伺服器上進行時間同步。當計算機連接配接 到了Internet之後,那麼就能同Internet上存在的很多時間伺服器通信,以獲得精确的時間。TCP/IP協定中,用于同步時間的協定為ntp協定,在Internet上提供ntp服務的站點有clepsydra.dec.com、ben.cs.wisc.edu、 truechimer.waikato.ac.nz等,雖然ntp協定本身考慮了網絡延遲,然而網絡延遲畢竟會對時間的精确性造成影響,是以應該選用一個離本地計算機最近的時間伺服器。

使用/stand/sysinstall也能設定時間同步,可以根據地域來選擇合适的時間伺服器,然而由于網絡連接配接并不一定和地域相一緻,是以不能完全根據地域的遠近來選擇時間伺服器。

使用ntp協定更新自己計算機上的時間的一個簡單的應用程式為ntpdate,同樣,這也需要使用root權限執行:

ntpdate clepsydra.dec.com

ntpdate運作過之後就退出了,為了保持時間的正确性,就要每隔一段時間自動進行時間同步,可以将ntpdate放入cron中,每隔一段時間就執行一次。然而系統提供了另一個守護程序,xntpd,能夠自動周期進行時間同步的工作,這更為适合與Internet有永久連接配接的計算機。為了運作xntpd守護程序,首先要建立/etc/ntp.conf檔案,其中應包括時間伺服器的名字和一個臨時檔案名。輸入如下指令:

vi /etc/ntp.conf

添加如下兩行:

server   clepsydra.dec.com

driftfile  /etc/ntp.drift

然後就需要運作這個守護程序,進行時間同步。輸入如下指令:

xntpd -c /etc/ntp.conf -p /var/run/xntpd.pid

其中-c參數指定了ntp.conf作配置檔案,用xntpd.pid記錄xntpd的程序辨別序号。ntpdate和xntpd都可以通過更改/etc /rc.conf中的選項,在啟動時自動執行。修改/etc/rc.conf檔案:

vi /etc/rc.conf

添加如下三行:

xntpd_enable="YES"            # Run xntpd Network Time Protocol (or NO).

xntpd_program="xntpd"           # path to xntpd, if you want a different one.

xntpd_flags="-c /etc/ntp.conf -p /var/run/xntpd.pid" # Flags to xntpd (if enabled).

如果要想讓本地網絡上的多台計算機都進行時間同步,那麼每個計算機都與外部時間伺服器連接配接的方法并不是一個好主意。更好的想法是使用一個計算機與外部時間伺服器同步,那麼它的時間就成為了标準時間,可以用作本地時間伺服器,而其他計算機與這台本地時間伺服器同步就可以了。xntpd就是設計為這個目的,它能夠用作提供時間的ntp伺服器。用作時間伺服器的xntpd的配置檔案(/etc/ntp.conf)應該為:

server     clepsydra.dec.com

driftfile      /etc/ntp.drift

broadcast   192.168.1.255

其中增加了一項廣播位址:192.168.1.255,定期向區域網路上的其他計算機廣播正确的時間。這個廣播位址要根據自己的網絡進行修改,或者使用對應于NTP協定的D類多點傳播(multicast)網址224.0.1.1,但使用者的網絡必須支援多點傳播能力。由于使用了廣播或多點傳播,這樣網絡内的其他計算機可以不配置ntp.conf,直接啟動xntpd,xntpd就能通過聽伺服器的廣播資訊來得到精确的時間。當然也可以不設定廣播位址,而配置每個計算機中的ntp.conf檔案,指定所有的計算機都通路這台時間伺服器。