Ubuntu comes with ntpdate as standard, and will run it once at boot time to set up your time according to Ubuntu’s NTP server. However, a server’s clock is likely to drift considerably between reboots, so it makes sense to correct the time occasionally. The easiest way to do this is to get cron to run ntpdate every day. With your favorite editor, as root, create a file
/etc/cron.daily/ntpdate must also be executable.
sudo chmod 755 /etc/cron.daily/ntpdate
ntpdate is a bit of a blunt instrument – it can only adjust the time once a day, in one big correction. The ntp daemon ntpd is far more subtle. It calculates the drift of your system clock and continuously adjusts it, so there are no large corrections that could lead to inconsistent logs for instance. The cost is a little processing power and memory, but for a modern server this is negligible.
To set up ntpd:
sudo apt-get install ntp
In both cases above, your system will use Ubuntu’s NTP server at
ntp.ubuntu.com by default. This is OK, but you might want to use several servers to increase accuracy and resilience, and you may want to use time servers that are geographically closer to you. to do this for ntpdate, change the contents of
ntpdate ntp.ubuntu.com pool.ntp.org
And for ntpd edit
/etc/ntp.conf to include additional server lines:
server ntp.ubuntu.com server pool.ntp.org
You may notice
pool.ntp.org in the examples above. This is a really good idea which uses round-robin DNS to return an NTP server from a pool, spreading the load between several different servers. Even better, they have pools for different regions – for instance, if you are in New Zealand, so you could use
nz.pool.ntp.org instead of
pool.ntp.org . Look athttp://www.pool.ntp.org/ for more details.
You can also Google for NTP servers in your region, and add these to your configuration. To test that a server works, just type
sudo ntpdate ntp.server.name and see what happens.