網路校時排程( ntpdate with crontab service )

最近剛好有學校要求幫忙處理server自動校時的設定,雖然蠻容易查到解決方法,不過還是簡單的做一下筆記與我的作法。


首先當然是要借助國家時間與頻率標準實驗室的服務。 ( http://www.stdtime.gov.tw/ )
在  這個文字檔案 中有說明有哪些提供服務的 ntpd server,所以,如果不是要在local提供 ntpd server 服務的話[*],只要把所管理的伺服器往列表中的校準伺服器進行校準就可以了。

前段說的有關ntpd server的概念,可以參考鳥哥的Linux私房菜這一篇,寫得很詳盡。

如果是Windows OS要進行校時,比較單純的是網域環境下,只要是接受網域控管的用戶端電腦,自動會跟網域控站同步時間,如果要手動同步時間,可以透過命令提示字元 ( net time )
net time 應該可以讀取網域控制站的時間
net time /domain:網域名稱 /set   可以手動同步client時間

或者,想要透過群組原則,指定時間同步的來源
( 也可以讓用戶端電腦對網域控制站以外的來源進行時間校準,不過這樣很怪吧? XD )
總之,這不是開始要寫這一篇文章的起點阿...  @@

回到 crontab,可能要快轉一下了。首先是前面提到國家時間與頻率標準實驗室那個文字檔。裡面有列出提供服務的伺服器位址:

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

在 Linux 當中,當然與WindowsOS道理相同,自身也有NTP服務,也可以接受外部NTP服務的校準,如果不是要提供服務,基本上也可以把ntpd給關了,因為如果ntpd服務在執行的狀態,ntpdate這個指令基本上也無法執行。

[root@dns ~]# ntpdate  time.stdtime.gov.tw
 6 Jun 15:10:32 ntpdate[13417]: the NTP socket is in use, exiting


乾脆把ntp服務給關了



[root@dns ~]# service ntpd stop
正在關閉 ntpd:                                             [  確定  ]


再測試一次

這樣看來就沒有問題了。然後要做的事情就是讓這個指令排到 crontab 裡面執行而已,太簡單了 ^^

當然,要定時執行有兩個方法,一是將命令寫成一個檔案 chmod +x 加上執行權限,把執行命令的執行檔加到排程當中。

另外一個方法就更簡單了點,直接把校準的指令寫到排程,一行字搞定!
(  @daily ntpdate  time.stdtime.gov.tw #校準時間   )

留言