ntpdate sets the local date and time by polling the Network Time Protocol (NTP) server(s) given as the
server arguments to determine the correct time. It must be run as root on the local host. A number of samples are obtained from each of the servers specified and a subset of the NTP clock filter and selection algorithms are applied to select the best of these. Note that the accuracy and reliability of
ntpdate depends on the number of servers, the number of polls each time it is run and the interval between runs.
ntpdate can be run manually as necessary to set the host clock, or it can be run from the host startup script to set the clock at boot time. This is useful in some cases to set the clock initially before starting the NTP daemon
ntpd. It is also possible to run
ntpdate from a
cron script. However, it is important to note that
ntpdate with contrived
cron scripts is no substitute for the NTP daemon, which uses sophisticated algorithms to maximize accuracy and reliability while minimizing resource use. Finally, since
ntpdate does not discipline the host clock frequency as does
ntpd, the accuracy using
ntpdate is limited.
Time adjustments are made by
ntpdate in one of two ways. If
ntpdate determines the clock is in error more than 0.5 second it will simply step the time by calling the system
settimeofday(2) routine. If the error is less than 0.5 seconds, it will slew the time by calling the system
adjtime(2) routine. The latter technique is less disruptive and more accurate when the error is small, and works quite well when
ntpdate is run by
cron every hour or two.
ntpdate will decline to set the date if an NTP server daemon (e.g.,
ntpd ) is running on the same host. When running
ntpdate on a regular basis from
cron as an alternative to running a daemon, doing so once every hour or two will result in precise enough timekeeping to avoid stepping the clock.
If NetInfo support is compiled into
ntpdate, then the
server argument is optional if
ntpdate can find a time server in the NetInfo configuration for
ntpd