Linuxサーバの時刻設定手順とエラー（the NTP socket is in use, exiting）

## はじめに

Linuxサーバを作る度に絶対に時刻設定するので、その手順とありがちなエラーについて書き残す。

## Linuxサーバ時刻設定手順＜決定版＞(2015/02/09 追記)

Linuxサーバの時刻について設定手順メモを残しておく。

（１） システムクロックの時刻を確認する

```
$ date
```

（２） ハードウェアクロックの時刻を確認する

```
$ sudo hwclock -r （または hwclock --show）
```

時刻がズレていた場合は、以下の設定を進めます。

（３） ntpd が起動している場合は停止する（ntpd が入っていない場合はインストールする）

ntpd が実行中の場合、ntpdate コマンドを実行するとエラーが発生するため、先に ntpd を停止させます。

```
$ sudo /etc/init.d/ntpd status                                                   
ntpd (pid  1438) を実行中...

$ sudo /etc/init.d/ntpd stop                                                     
ntpd を停止中:                                             [  OK  ]
```

（４）ntpdate コマンドでシステムクロックの時刻を合わせる

```
$ sudo ntpdate ntp.nict.jp
```

（５）ntpd の設定（ /etc/ntp.conf の編集）をする

設定ファイル /etc/ntp.conf を編集します。

```vim:
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
```

となっている部分を、以下のように編集。

```vim:
server -4 ntp.nict.jp
server -4 ntp1.jst.mfeed.ad.jp
server -4 ntp2.jst.mfeed.ad.jp
server -4 ntp3.jst.mfeed.ad.jp
```
ntp1.jst.mfeed.ad.jp は ntp.nict.jp と同期している別サーバです。


（６） ntpd を起動する

```
$ sudo /etc/init.d/ntpd start                                                    
ntpd を起動中:                                             [  OK  ]
```

（７） ntpd の働きぶりを確認する

```
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-b2.nict.go. .NICT.           1 u   54   64  377   17.349    0.297   0.733
+ntp1.jst.mfeed. 172.29.2.50      2 u   52   64  377   17.371   -0.814   1.657
+ntp2.jst.mfeed. 172.29.2.50      2 u   46   64  377   17.486    0.372   2.005
+ntp3.jst.mfeed. 172.29.3.50      2 u   48   64  377   16.239   -0.070   2.101
```

各サーバの前に*とか+がつくと同期完了です。
（起動してすぐは、ついてないかもだけど、しばらくするとつきますのでご心配なく。）

（８）自動起動を設定する

忘れがちだけど、これ設定してないと、再起動したとき、また時間狂っちゃうからお忘れなく。

```
$ sudo chkconfig ntpd on
$ chkconfig --list ntpd
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
```

（９）ハードウェアクロックの時刻をシステムクロックの時刻で合わせる

最後の仕上げ。これも忘れがち。

```
$ sudo hwclock -w （または hwclock --systohc）
```

これであなたも、時刻合わせマスターだ。


## 参考

今日も先人様に感謝。

時刻合わせ全般について、わかりやすくかつ詳しくまとまっています↓

* [NTPサーバーによる時刻同期](http://linux.kororo.jp/cont/server/ntp.php)

システムクロックの設定手順はこちらの記事が完結で完璧でした↓

* [CentOSにntpサーバを入れて、日本標準時刻に自動的に合わせるためのメモ - Qiita](http://qiita.com/tsu_nera/items/9be676b04b190e45b281)

ハードウェアクロックの説明はこちらがわかりやすかったです↓

* [時計合わせ](http://www14.plala.or.jp/campus-note/vine_linux/system/clock.html)

時刻管理全般の説明が詳しく書かれている記事です↓

* [実践でも役立つLPICドリル（8）：Linux時刻管理の仕組みと設定 (1/4) - ＠IT](http://www.atmarkit.co.jp/ait/articles/0812/26/news120.html)


## とある日に発生させたエラー（ the NTP socket is in use, exiting ）

久しぶりに起動したローカルVirtualBoxのVM（CentOS6.4）でプログラム動かしてたら、
ログの出力時間がおかしいので、dateコマンドで確認すると、サーバの時刻が狂ってた。

```lang:bash
# date
2014年 12月 12日 金曜日 05:39:26 JST
```

そんな早朝に仕事はヤだよ。。。

あれ～NTPサーバ設定してるはずなんじゃけど・・・と思いながら、
とりあえず、コマンドで時刻合わせとくか～ってことで、以下コマンド実行。

いつも世話になっとる（？） ntp.nict.jp で時刻同期を試みる。

```
# ntpdate ntp.nict.jp
12 Dec 05:41:16 ntpdate[1831]: the NTP socket is in use, exiting
```

うげ、なんかエラーじゃよ。

えーじゃあ、NTPサーバの設定をちゃんとやるかぁって思って確認したら、
なんかちゃんと動いてるっぽい。
念のためサービスの再起動もしたんだけど、時刻が全然ずれてる・・・。なんで？？？？

と思って、ググって調べてみると、以下、先人の知恵を発見。毎度感謝。

> NTPサーバーによる時刻同期 : http://linux.kororo.jp/cont/server/ntp.php

以下、上記サイトより引用。

> ■時刻の即時調整

>　上記で設定したNTPは時間が即座に調整されるというわけではなく、システムに問題が発生しないように徐々に時間を調節していきます。けれども、ＵＴＣの時刻と内蔵時計の差があまりに狂っている場合は時間が調整されるまで時間がかかってしまいます。そこで、ntpdateコマンドを使用することで現在の時刻を即座に調整しておきます。書式は、「ntpdate "NTPサーバー名"」です。

>　なお、コマンド実行時はNTPサーバーを停止させておかないと「the NTP socket is in use, exiting」というエラーメッセージが表示されますのでNTPサーバーを一旦、停止させてから再度起動するようにしてください。

なるほどなるほど。

というわけで、一回NTPサーバを停止した状態で ntpdate コマンドを実行することに。

```
# /etc/init.d/ntpd stop                                                  
ntpd を停止中:                                             [  OK  ]

# ntpdate ntp.nict.jp                                                    
12 Dec 14:48:58 ntpdate[1857]: adjust time server 133.243.238.243 offset -0.031820 sec

# /etc/init.d/ntpd start                                                 
ntpd を起動中:                                             [  OK  ]

# date
2014年 12月 12日 金曜日 14:50:35 JST
```

おー、いけたいけた。もうすぐ、おやつタイムやがな。
これでひと安心して、おやつもぐもぐ食べれるね。

というわけで、無事解決、ちゃんちゃん。


以上