Arcane, seriously? What kind of syntax would be modern and clear in your opinion? YAML? JSON? XML probably, with a nice 150-page XTBJSPCOSDF (Extensible Time-Based Job Scheduling for POSIX-Compatible Operating Systems Description Framework) spec? ;)
Personally, I think this is pretty straightforward:
#minute hour mday month wday command
30 1 * * * /bin/sh /etc/daily
30 3 * * 6 /bin/sh /etc/weekly
30 5 1 * * /bin/sh /etc/monthly
8-59/30 * * * * do_something
The command do_something will execute
the 8th through 59/30th minutes of
every hour every day.
Not impressed - seems overly simplistic.
Agreed that it's not impressive, beings that the explanation is simply wrong. It's an edge case I'm definitely not handling properly. I've got [an open issue](https://github.com/pbyrne/cron-checker/issues/7) about combining ranges and modulo, but haven't gotten around to implementing it yet. Displaying an incorrect explanation is probably worse than no explanation, though, in retrospect.
14-59/15 - Every 15th minute starting with the 14th
up to and including the 59th.
2-57/2 - Every 2nd minutes starting with the 2nd
up to and including the 56th.
assert(cronchecker(cronstring(input)) == input)
Results are a little harder to read. This other site gives more natural sentences.
CronWTF doesn't understand it either and that one even has a cat!
The first minute of the hour, then every 5 minutes until the 56th minute, inclusive
That said, it's a pretty great product and you should check them out!
It would also be great to support the seconds field.
From "man 5 crontab":
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
A field may be an asterisk (*), which always stands
Ranges of numbers are allowed. Ranges are two
numbers separated with a hyphen. The specified
range is inclusive.
For example, 8-11 for an "hours" entry specifies
execution at hours 8, 9, 10 and 11.
Lists are allowed. A list is a set of numbers (or
ranges) separated by commas. Examples: "1,2,5,9",
is not a very good example. It will launch a shell which will change to the specified directory and then terminate. (It might produce an error message if the directory doesn't exist.)
I also turn to http://cronwtf.github.io when I need to sanity-check my crontab, which is a little more verbose and includes JSSpec tests.