Would have been nice to have some more network, code and command line examples. You need to set up a local ntpd and need to point your local master at that temporarily. A better utility to write would be "timediff -s1 -s2" that takes two time servers and shows the offset. I bet there's a way to do that in one line. Anyone?
Um, that's a pretty inaccurate way to notice an offset in the millisecond range, isn't it?
* Okay, you have a little control in that you can press enter, or otherwise set it running, at a particular moment.
I have a program I use in shell scripting called sleepuntil that does something like this, but it doesn't try to be millisecond-accurate.
So I figured you need a time "diff", a single command that updates from both timeservers and then presents the offset in a single operation. So (I just researched this again and) there's three answers here [0], using ntpdate and something I've never seen before called clockdiff.
[0] https://stackoverflow.com/questions/2296981/how-can-i-work-o...
To see the NTP offsets of a machine you can run something like:
ntpq -pn
ntpdate -q doesn't seem very consistent to me, even pointing it at a nearby server.To see the clocks ticking visually you can do something like the following and run it on each machine (assuming they have the same ping).
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
void main() {
struct timeval tv;
struct timespec ts;
ts.tv_sec = 0;
while(1) {
gettimeofday(&tv, NULL);
ts.tv_nsec = 1000000000 - 1000*tv.tv_usec; //number of nanoseconds left in the current second
nanosleep(&ts, &ts);
gettimeofday(&tv, NULL);
printf("%lu.%06lu\n", (unsigned long) tv.tv_sec, (unsigned long) tv.tv_usec);
}
}
Note that the sleep and second gettimeofday call take a little time (between 70 and 300 μs for me, but it depends what else is running), so the tick times reported won't be exactly on the second.