Linuxシステム間の時間差が5秒を超えないことを確認する方法

Linuxシステム間の時間差が5秒を超えないことを確認する方法

すべてのコンピュータの間隔が5秒未満であることをどのappolo01ように確認できますか?mars3

ssh appolo01 date ; ssh appolo02 date ; ssh appolo03 date ; ssh mars1 date ; ssh mars2 date ; ssh mars3 date


Sun Apr 22 09:05:39 UTC 2018
Sun Apr 22 09:05:40 UTC 2018
Sun Apr 22 09:05:40 UTC 2018
Sun Apr 22 09:05:40 UTC 2018
Sun Apr 22 09:05:40 UTC 2018
Sun Apr 22 09:05:48 UTC 2018

答え1

date +%sたとえば、1524388823ロケールによって人間が読める日付とは異なり、UNIXタイムスタンプを取得するために使用されます。これにより、スクリプトで比較しやすくなります。

時間が正しく同期されたマシンでは、次のように動作します。

a=$(date +%s)
b=$(ssh user@remote date +%s)
c=$(date +%s)

if [ $a -le $b  -a  $b -le $c ]
then
    echo Seems to be OK.
fi
  • (a)SSH以前の現地時間です。
  • (b)遠い時間なのに、
  • (c)SSH以降の現地時間です。

(a <= b <= c)時間が同期していると仮定するのはかなり安全です。これはネットワーク待ち時間をまったく考慮しませんが(delta(a、c)の確認)、まだ合理的でなければなりません。 SSHがパスワードを要求しない場合、または一日中パスワードを提供しないとします。

それでも5秒の余白を追加するには、a-5とc + 5を使用してください。もちろん、これはどちらの方向でも5秒を許可し、すべてのシステムで5秒のウィンドウが収まるわけではありません。しかし、コンソールの名前が示すように、実際に深宇宙ミッションを実行していない場合は、そもそもそのような大きな視差を受け入れる理由はありません。

NTPを1年に1回ではなく継続的に使用する場合は、とにかくすべてのコンピュータが完全に同期する必要があります。

関連情報