First, update the zone file manually, BE SURE TO UPDATE THE SERIAL #, but do not reload the domain at this moment.
Here's the command:
echo "rndc -s 127.0.0.1 domain.com" | at now + 90 min -m
(The above command on one line)
Here's an explanation of the syntax I used:
echo "command here" | at TIME -m
So,
Breadown of the command in more detail
** echo "rndc -s 127.0.0.1 domain.com" = Don't run it now, just send the command to use the dns rndc control, connecting to the local name server, and reload the following domain name
** | = Pipe the previous result of the echo to the following
** at now + 90 min = Run it 90 minutes from right now (yep, it's that simple).. you could also use now + 2 hours, etc... run a "man at" to get additional information
** -m = send email afterwords of the output to the user who ran this job
So....
echo "rndc -s 127.0.0.1 domain.com" | at now + 20 min -m
would tell bind dns to reload the domain "domain.com" in 20 minutes.
Caveot: If you dns server or bind service is restarted before the at command ran, then the new information would automatically be loaded, making the at command useless