■うるう秒について総務省他、関連各所で発表がありました。
参考:「うるう秒」挿入のお知らせ
http://www.soumu.go.jp/menu_news/s-news/01tsushin03_02000031.html
■3 年半ぶりとのことなので、前回の記事がそのまま参考になります。
参考:【Technical Notes】Linux システムクロックの『うるう秒』調整
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-0019DB89?OpenDocument&TableRow=1.2
■手動で設定するか、NTPサーバが自動で設定するかのいずれかです。
※上位の NTP サーバーがうるう秒の挿入情報を適切に設定している必要があります。
■日本国内からの推奨のタイムサーバを確認し、
うるう秒挿入を明確にサポートしているNTPサーバを参照します。
ntp.nict.jp
参考:推奨公開サーバ
http://wiki.nothing.sh/page/NTP/%BF%E4%BE%A9%B8%F8%B3%AB%A5%B5%A1%BC%A5%D0
参考:「うるう秒」挿入のお知らせ
http://www.nict.go.jp/press/2012/01/31-1.html
■念の為、NICTの運用情報もチェックしておきます。
参考:運用情報
http://www2.nict.go.jp/w/w114/tsp/PubNtp/index.html
参考:NTP サーバ一覧
http://www.venus.dti.ne.jp/~yoshi-o/NTP/NTP-Table.html
■閏秒は「ISO 8601」で規定されているので、確認さえ行えば問題ないはずです。
参考:ISO 8601
http://ja.wikipedia.org/wiki/ISO_8601
■システムログには以下のようなログが出力されるはずです。
Clock: inserting leap second 23:59:60 UTC
■Debian Lennyにntpを導入
※debianサーバも参照していますので、「ntp.nict.jp」をその前に設定します。
・より正確さを求めるのであれば、debianのNTPサーバ3行をコメントアウトし、
「server ntp.nict.jp」を3行書いてDNSラウンドロビンでNICTの別々のサーバを参照します。
・セカンダリのタイムサーバも書いた方が良いです。
・閏秒の挿入前の2月にはLennyのサポートが切れます。
$ sudo apt-get install ntp
$ sudo cp -pi /etc/ntp.conf /etc/ntp.conf.org
$ sudo vim /etc/ntp.conf
$ diff /etc/ntp.conf /etc/ntp.conf.org
21d20
< server ntp.nict.jp
$ sudo /etc/init.d/ntp restart
$ ps -ef | head -1;ps -ef | grep ntp | grep -v grep
UID PID PPID C STIME TTY TIME CMD
ntp 20206 1 0 Jan31 ? 00:00:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -u 110:115 -g
■設定の反映の確認
「nict」のDNSラウンドロビンで転送されたNTPサーバを参照していることが確認出来ます。
「*」は同期したサーバ、「+」は次に同期するサーバ
$ sudo ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-a3.nict.go. .INIT. 16 u - 1024 0 0.000 0.000 0.000
xtriangle.kansas 128.252.19.1 2 u 246 128 376 174.699 -487.34 152.429
*64.73.32.134 164.67.62.194 2 u 117 128 377 169.315 -14.031 3.368
tick.e.mattnord .INIT. 16 u - 1024 0 0.000 0.000 0.000
+mail.freerip.co 67.18.187.111 3 u 53 128 377 122.192 -1.223 2.426
■同期し始めると、最新のログが残ります。
$ grep drift /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
$ sudo cat /var/lib/ntp/ntp.drift
-14.725
■システムログ(syslog)には以下のようにログが出ます。
$ sudo cat /var/log/syslog | grep -i ntpd | grep -v Listening | cut -c 44-
ntpd 4.2.4p4@1.1520-o Sun Nov 22 16:14:34 UTC 2009 (1)
precision = 1.000 usec
kernel time sync status 0040
0.799251] warning: `ntpd' uses 32-bit capabilities (legacy support in use)
synchronized to 216.129.110.22, stratum 2
time reset -161.188607 s
synchronized to 216.129.110.22, stratum 2
ntpd exiting on signal 15
ntpd 4.2.4p4@1.1520-o Sun Nov 22 16:14:34 UTC 2009 (1)
precision = 1.000 usec
kernel time sync status 0040
frequency initialized 0.000 PPM from /var/lib/ntp/ntp.drift
synchronized to 64.6.144.6, stratum 2
kernel time sync status change 0001
synchronized to 64.73.32.134, stratum 2
■閏秒(leap second)の情報は以下で確認します。
Lenny(amd64)の場合は以下のようになります。
$ sudo ntpq -c rv | grep --color leap
assID=0 status=0654 leap_none, sync_ntp, 5 events, event_peer/strat_chg,
processor="x86_64", system="Linux/2.6.26-2-amd64", leap=00, stratum=3,
■7/1(日)8時59分60秒に実施されるとのことですので、
その前後の情報をシステムメールで通知する為のスクリプトを書きます。
$ whereis -b ntpq mail
ntpq: /usr/bin/ntpq
mail: /usr/bin/mail /etc/mail.rc
$ sudo vim leapcheckmail.sh
MDATE=`date '+%Y/%m/%d %H:%M'`
MFQDN=`hostname -f`
MUSER=`whoami`
MLOG=/var/log/ntpq.log
if [ `id -u` -eq "0" ];then
echo "#\"leap=\" check ${MDATE}" >> ${MLOG}
ntpq -c rv >> ${MLOG}
sed s/"\,"/"\n"/g ${MLOG} | grep "leap=" | mail -s "ntpq leap second report : ${MDATE}" ${MUSER}@${MFQDN}
exit 0
else
echo "You must be root to exec $0"
exit 1
fi
■上記スクリプトでメールを送ると以下のようになります。
※「leap=01」が閏秒の挿入タイミングです。
$ sudo chmod +x leapcheckmail.sh
$ sudo ./leapcheckmail.sh
$ sudo ./leapcheckmail.sh
Subject: ntpq leap second report : 2012/02/01 00:36
leap=00
leap=00
■rootユーザのcronに登録します。
※「MAILTO=""」でmailが飛ばないようにしていなければ、
debianではcronの実行結果がシステムメールで通知されます。
「/etc/cron.d/leapcheck」内でログを取るだけのcronを書く方法もあります。
$ sudo mv leapcheckmail.sh /usr/local/bin/leapcheckmail.sh
$ sudo env EDITOR=vim crontab -e
$ sudo env EDITOR=vim crontab -l
MAILTO=""
0 7,8,9 * * * /bin/bash /usr/local/bin/leapcheckmail.sh
■冗長ですが、上記で毎日、7時、8時、9時にメールが来ますので、
「7/1」まで該当時間にチェックするクセも付くと思います。