自宅サーバーで室内の温度を監視するシステムを構築しようとしている。具体的には、Arduinoというマイコンに温度センサを載せ、サーバーとArduinoをUSBで接続し、定期的に温度を取得し記録するというもの。まずはクライアント機でスクリプトを作成し、上手いこと動いたらサーバー機で稼働させることにしたのだが、サーバーで実際に稼働させようとしたところ、データを取得している時間がどうもおかしい。私が馬鹿の一つ覚えでこの手のシステムを作るときに使う方法というのは、シェルスクリプトに書いたものをcronで定期的に実行するという方法で、今回も5分ごとにtemp.shを実行してlogファイルを更新するというスクリプトを書いていた。ところが、きちんとlogファイルが更新されているか確かめてみると、指定した時間になっても更新されない。おかしい、と思ってサーバーにsshで入ってdateコマンドを実行して驚いた。「サーバーのシステム時間が5分もずれている!」どうやらubuntu server(12.04LTS)はインストール時に勝手にどこかのntpサーバーと時刻を同期するようには設定してくれないようだ。慌ててcronの設定ファイルにntpdateコマンドを追加した。これで1日に1回、時間を同期してくれるはずである。これまで動かしていたスクリプトのうち、バックアップ的なものは定期的にやれば実行時間が数分ずれようが問題ないのであるが、WEBカメラを用いた監視システムなんぞは記録時間が大きな意味を持つわけで、それがが全部時間がずれていたことになる。ショック!
Post a Comment