• ベストアンサー

Linuxでhttpプロトコルで時刻合わせするアプリやスクリプトをご存知の方、教えてください。

Linuxでhttpプロトコルで時刻合わせするアプリやスクリプトをご存知の方、教えてください。 CentOS5で使うつもりです。ntpプロトコルは使いません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Linuxでhttpプロトコルの時刻同期をするコマンドはhtpdateになります。 htpdateで検索してみてください。 httpプロトコルのタイムサーバは国内ではNICT(情報通信研究機構)から配信されています。 一般のディストリビューションには同胞されていませんので各自インストールする必要があります。 具体的なインストールと実行方法は次のようになります。 # wget http://www.clevervest.com/htp/archive/perl/htp-0.9.3.tar.gz # tar xzvf htp-0.9.3.tar.gz # cd htp-0.9.3/sbin # ./htpdate -d nict.go.jp TestHEAD http://nict.go.jp Pragma: no-cache HTTP/1.1 200 OK Connection: close Date: Sat, 13 Feb 2010 17:20:46 GMT Accept-Ranges: bytes ETag: "127c3-45c4-47f632d31d746" Server: Apache Content-Length: 17860 Content-Type: text/html Last-Modified: Fri, 12 Feb 2010 08:37:23 GMT Client-Date: Sat, 13 Feb 2010 17:20:46 GMT Client-Peer: 133.243.3.34:80 Client-Response-Num: 1 http://nict.go.jp => 0 second(s) Time not changed (0 sec) (一般に -d オプションは必要ありません) うちはNTPを使っているので0秒で誤差ありませんでしたが、誤差があった場合時計が修正されます。 htpdateを/usr/sbinにコピーして、cronにて 3 0 * * * /usr/sbin/htpdate nict.go.jp 2>&1 > /dev/null とでもしておけばよろしいかと思います。 また、httpdの同期はNTPより精度が落ちますので、ポーリングの頻度を高くしてもあまり意味がありません。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10357)
回答No.2

ntpのように正確に合わせるのは難しいでしょうね。数十ミリ秒誤差があっていいなら、こんな感じで。 ホスト名部分は出来るだけ近くのホストを指定。 #!/bin/bash HOST=www.iij.ad.jp exec 3<>/dev/tcp/$HOST/80 echo -e 'HEAD / HTTP/1.0\r\n\r' >&3 DATE=$(grep '^Date:' <&3) date -s "${DATE#Date:}"

関連するQ&A