This is my first post on this board and I thank you in advance for helping me with this issue.
Any idea how I can synchronize server time with another timeserver but have my server lag behind by 2 seconds?
Meaning...I need a simple unix script that I can run as crone that takes as variable the url of another server and makes my server's time that of the other server plus 2 seconds. So if it is there 9:00 pm, my server's time becomes 21:00:02
Hmmm. At first I thought this was going to be a humdinger. This is how I solved the problem of having offset time by +2 seconds:
set -- `date -v +2S`
date ` echo $4 | sed -e 's/:/ /g' | awk '{printf("%s%s.%s\n", $1, $2, $3);}'`
Give it a try, your mileage may vary. I checked this out on a FreeBSD 4.5 system. This should be in your cronjob shell script right after sync'ing the time of the box. You will probably lose several tenths of a second. I don't know how accurate you have to have your clock sync'd to the server and this might be of some consideration.
Another important note is to not execute the cronjob near midnight. If for some reason the time sync'd at 23:59:59 the above shell script would be bad as the actual date wouldn't change, but the time would be 00:00:01 of the same day, effectively setting the time back almost 24 hours.
If you're using GNU date, you can use the --date option:
my_time=$(date --date="2 seconds")
That will give you the date 2 seconds from now.
This is not really the best way of doing this, though, in case the script takes longer, or the time gets changed a different amount.
The more time you take trying to fix up a two second delay, the more likely you'll be off by more than two seconds in the end...