모든 컴퓨터 의 간격이 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년에 한 번이 아니라 지속적으로 사용한다면 어쨌든 모든 컴퓨터가 완벽하게 동기화되어야 하며 대부분의 경우 우리는 맹목적으로 그렇다고 가정하고 확인조차 하지 않습니다.