…生活與工作…個人的生活雜記….

網路對時

時間的準確性向來都是很重要的,長時間坐在電腦前面,是否想要知道現在的時間呢??
以下提供一些方法,讓各位能夠自由的去得到最正確的時間。

Windows
建議使用標準檢驗局、海洋大學及中華電信研究所提供的中文化程式:校時中文版v2.10
http://www.stdtime.gov.tw/chinese/EXE/NTPClock.exe
設定啟動時執行即可,預設執行時連到time.stdtime.gov.tw對時,並每隔一小時再對時一次。
[註]在win2000上,可在命令提示字元下輸入:
C:\>net time /setsntp:time-b.nist.gov(設定ntp server)
指令執行成功。
C:\>w32tm -once(執行一次對時)
接著會出現一堆執行w32Time的訊息,就完成對時了。

Unix
安裝FreeBSD或Linux或其他unix,在/usr/sbin目錄下一般都會有ntpdate,
只要以root身份執行
/usr/sbin/ntpdate -s time-b.nist.gov
即可對時;其中參數 s 代表將執行後的messages交由 syslog 來記錄,例如記錄在 /var/log/messages檔案。

ntpdate 程式有二種校正模式:
如果時鐘的誤差超過0.5 秒就執行settimeofday(2) 直接設定時間;
如果時鐘的誤差小於0.5 秒則執行adjtime(2)來修正系統時鐘。

Linux並不會將校對過的時間寫入CMOS,可以再執行 /sbin/clock -w 將時間寫入。

如果系統沒有ntpdate,可以抓原始碼來編譯:
http://www.eecis.udel.edu/~ntp/index.html
抓回ntp-4.1.1.tar.gz
#tar zxvf ntp-4.1.1.tar.gz
#cd ntp-4.1.1
#./configure
#make
#make install
預設會將 ntpd, ntpdate….都裝在/usr/local/bin/目錄下,如果只是要當client,會用到的是 ntpdate 而已。

建議開機對時一次,並用crontab定期對時,如:
◎修改/etc/rc.local新增
/usr/local/bin/ntpdate -s time-b.nist.gov;/sbin/clock -w
◎在 root 的crontab加上
* 0,6,12,18 * * * (/usr/local/bin/ntpdate -s time-b.nist.gov;/sbin/clock -w) > /dev/null

如果無法成功執行ntpdate,則有可能是被防火牆擋住UDP(123)了,只要修改iptables即可,如:

-A input -s 0/0 -d 0/0 123 -p udp -y -j ACCEPT

參考網站:
這裡有各種OS版本的最新對時工具:
http://www.eecis.udel.edu/~ntp/software/index.html

時間與頻率國家標準實驗室
http://www.stdtime.gov.tw

[註]
中原標準時間(China Standard Time, CST)=台灣標準時間(Taiwan Standard Time, TST)

世界標準時間(Coordinated Universal Time, UTC)=格林威治時間(Greenwich Mean Time, GMT)
快8個小時
即CST=TST=UTC+8=GMT+8