The commands and steps to initiate a forceful sync with NTP server may vary based on the distribution you are using.
By default if NTP service is running it will automatically sync the client's date and time from the NTP server based on the polling interval but what if you want to do a force sync immediately and cannot wait for the NTP client to sync it.
On SuSE Enterprise Linux
The current date and time on my node is
# date
Fri Dec 8 02:51:04 IST 2017
My ntp service status
# /etc/init.d/ntp status
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.10.100 10.171.8.4 3 u 1 64 1 0.173 -593996 0.000
10.40.130.1 .INIT. 16 u - 64 0 0.000 0.000 0.000
Checking for network time protocol daemon (NTPD): running
So my ntp client is running, lets change the date and time of my node before doing a force sync
# date --set "4 Dec 2017 10:00:00"
Mon Dec 4 10:00:00 IST 2017
My new date and time
# date
Mon Dec 4 10:00:02 IST 2017
Time to do a force sync
# /etc/init.d/ntp ntptimeset
Time synchronized with 192.168.10.100
So as you see it immediately sent a request to the NTP server and updated the localhost date and time details from the NTP server
# date
Thu Dec 7 10:23:35 IST 2017
On Red Hat Enterprise Linux 7
Unfortunately ntptimeset is not available in Red Hat Enterprise Linux so we have to try something else
My existing date and time
# date
Thu Dec 7 10:25:03 IST 2017
NTPD service status
# systemctl status ntpd
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2017-12-06 17:43:02 IST; 16h ago
Process: 5957 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 5958 (ntpd)
CGroup: /system.slice/ntpd.service
└─5958 /usr/sbin/ntpd -u ntp:ntp -g
Dec 06 17:43:02 Ban17-pgw01-a systemd[1]: Starting Network Time Service...
Dec 06 17:43:02 Ban17-pgw01-a ntpd[5957]: ntpd 4.2.6p5@1.2349-o Wed Mar 1 09:00:51 UTC 2017 (1)
Dec 06 17:43:02 Ban17-pgw01-a systemd[1]: Started Network Time Service.
Dec 06 17:43:02 Ban17-pgw01-a ntpd[5958]: proto: precision = 0.038 usec
Dec 06 17:43:02 Ban17-pgw01-a ntpd[5958]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Now lets change the date and time
# date --set "4 Dec 2017 10:00:00"
Mon Dec 4 10:00:00 IST 2017
First stop the ntpd service
# systemctl stop ntpd
Next initiate a force sync from your NTP server using the below command
# ntpdate 192.168.10.100
7 Dec 10:27:36 ntpdate[6701]: step time server 192.168.10.100 offset 260769.003401 sec
Now start the NTP service again
# systemctl start ntpd
Lastly validate if your localhost date and time is updated correctly
# date
Thu Dec 7 10:27:48 IST 2017
IMPORTANT NOTE: If you do not wish to stop the ntp server for doing the sync then use "-u" with ntpdate
-u Direct ntpdate to use an unprivileged port for outgoing packets. This is most useful
when behind a firewall that blocks incoming traffic to privileged ports, and you want to
synchronize with hosts beyond the firewall. Note that the -d option always uses unprivi‐
leged ports.
Without '-u' and when NTPD service is running
# ntpdate 0.in.pool.ntp.org
10 Feb 17:34:48 ntpdate[2574]: the NTP socket is in use, exiting
With '-u' and ntpd running in the background
# ntpdate -u 0.in.pool.ntp.org
10 Feb 17:35:22 ntpdate[2575]: step time server 13.126.37.14 offset 1.335054 sec
I hope the article was useful.
