Subject: Re: syntax ideas solicited
To: Perry E. Metzger <perry@wasabisystems.com>
From: Robert Elz <kre@munnari.OZ.AU>
List: tech-userlevel
Date: 12/25/2001 14:52:18
    Date:        24 Dec 2001 15:25:23 -0500
    From:        "Perry E. Metzger" <perry@wasabisystems.com>
    Message-ID:  <87wuzcl618.fsf@snark.piermont.com>

  | Any ideas on an appropriate character, or alternate syntaxes, or ideas
  | on prior art, or just plain ideas?

Please don't start adding funny characters at the start of the line,
crontab syntax is already foul enough.

But if you really need this, since cron already supports setting sh type
variables, why not do something like

WITHIN=30
* 0 * * * ...

WITHIN=3600
<whatever>
<and another>

to specify the bounds on when the command should be started of the time
specified (with "WITHIN=0" being the default, and meaning "before time for
the command to run next" which is what it currently does I believe).
(The value would be a limit in seconds, allow "5m" and such if you want).

Personally, I'd be just as happy if cron would simply ignore time jumps
longer than 5 minutes - run nothing at all that was supposed to happen
during that interval, with no syntax to tell it that they should get run.
That's what happens if cron isn't running at all after all - if your system
was shut down, rather than asleep, when cron restarts, it doesn't look
for everything it would have run had it been running, and run them all, it
just starts again fresh.

To me, that seems perfectly adequate, easy to explain, and no magic syntax
at all.    Then if there's something that you absolutely want to run sometime,
you just have a cron command that runs every however often you want, checks
if the necessary work has been done (or done recently enough) and if not,
does it - otherwise it just does nothing.   Or even better, do it via "at",
with an at job that schedules itself for the next time it should be run.
Those get run when the time has passed - no matter by how far.

kre