• If I need a daily task (or whatever time period), and I need to take into account server reboots unannounced, then I tend do write my own scheduler (using Perl). On invocation (which is every 5 mins or so), it checks the last run date in a status file which is written to disk after each successful run.

    If it's not run for this time period, it then carries on merrily performing the task you want done.

    You can script in your own time windows of opportunity, and times to avoid quite easily.

    A five minutely invocation is usually enough resolution to make sure something gets done sharpish (you can make it every 15 mins or whatever resolution you think is best), and the overhead of starting up a small Perl process is pretty much negligible.