diff options
-rwxr-xr-x | examples/var_service/ntpd/ntp.script | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/examples/var_service/ntpd/ntp.script b/examples/var_service/ntpd/ntp.script index 76c34bf74..8542181eb 100755 --- a/examples/var_service/ntpd/ntp.script +++ b/examples/var_service/ntpd/ntp.script @@ -10,12 +10,30 @@ dt=`date '+%Y-%m-%d %H:%M:%S'` +echo "`tail -n 199 -- "$0.log" 2>/dev/null`" >"$0.log.$$" + +if test x"$1" = x"unsync" \ +; then + # No replies for our NTP requests were seen for some time. + # + # Among more mundate cases like network outages, this happens + # if we ran for a LONG time (days) and ntp server's IP has changed. + # ntpd has no code to re-resolve peers' addresses to IPs, + # we need to help it: + # + echo "$dt: $1"\ + "syncronization lost, restarting ntpd"\ + >>"$0.log.$$" + mv -- "$0.log.$$" "$0.log" + kill $PPID + exit +fi + if test x"$stratum" != x"" \ && test x"$poll_interval" != x"" \ && test 4 -ge "$stratum" \ && test 128 -le "$poll_interval" \ ; then - echo "`tail -n 199 -- "$0.log" 2>/dev/null`" >"$0.log.$$" echo "$dt: $1"\ "freq_drift_ppm=$freq_drift_ppm"\ "offset=$offset"\ @@ -27,7 +45,6 @@ if test x"$stratum" != x"" \ exec hwclock --systohc fi -echo "`tail -n 199 -- "$0.log" 2>/dev/null`" >"$0.log.$$" echo "$dt: $1"\ "freq_drift_ppm=$freq_drift_ppm"\ "offset=$offset"\ |