Live data from Hacker News

Cron commands to plain English

cronchecker.net

21–28 of 28 posts

Re: Cron commands to plain English

#21
post #9

It would be great to also list the next few datetimes that this would occur on as examples. It would also be great to support the seconds field.

I believe cron does not have a seconds field:

From "man 5 crontab":

    cron(8) examines cron entries once every minute.
    The time and date fields are:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              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
    for "first-last".

    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",
    "0-4,8-12".

Re: Cron commands to plain English

#22

OK, so I gave it this: 8-59/30 * * * * do_something It replied: The command do_something will execute the 8th through 59/30th minutes of every hour every day. That's a pretty poor description of something that will run at 8 and 38 minutes past the hour, every hour of every day. Not impressed - seems overly simplistic.

> 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.

Re: Cron commands to plain English

#24
post #6

Looks like they're the chaps behind https://deadmanssnitch.com which looks like a simple and useful service.

Hi there. Popping in to clarify that the (excellent) folks behind Dead Man's Snitch are advertising on the site, but that otherwise I'm not affiliated with them and they haven't contributed to the project beyond the ad.

That said, it's a pretty great product and you should check them out!

Re: Cron commands to plain English

#25
> the arcane syntax

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

Re: Cron commands to plain English

#26
post #22

OK, so I gave it this: 8-59/30 * * * * do_something It replied: The command do_something will execute the 8th through 59/30th minutes of every hour every day. That's a pretty poor description of something that will run at 8 and 38 minutes past the hour, every hour of every day. Not impressed - seems overly simplistic.

> 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,…

The challenge is to decide what you would want it to say in the case of, say, "14-59/15". Do you want it to list all the possibilities? That becomes tedious if you have something like 2-57/2. Do you want to try to create a more direct plain English parse?

    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.
A choice needs to be made - the direct plain English parse is quite long, and not always easy to read.

Re: Cron commands to plain English

#27
post #9

It would be great to also list the next few datetimes that this would occur on as examples. It would also be great to support the seconds field.

I believe cron does not have a seconds field: From "man 5 crontab": cron(8) examines cron entries once every minute. The time and date fields are: field allowed values ----- -------------- minute 0-59 hour 0-23 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 for "first-last". Ranges of numbers are allowed. Ranges are…

In some uses of the CRON format there is also a seconds field at the beginning of the pattern. In that case, the CRON expression is a string comprising 6 or 7 fields.

http://en.wikipedia.org/wiki/Cron#Format

Re: Cron commands to plain English

#28

Earlier quoted context omitted.

I believe cron does not have a seconds field: From "man 5 crontab": cron(8) examines cron entries once every minute. The time and date fields are: field allowed values ----- -------------- minute 0-59 hour 0-23 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 for "first-last". Ranges of numbers are allowed. Ranges are…

In some uses of the CRON format there is also a seconds field at the beginning of the pattern. In that case, the CRON expression is a string comprising 6 or 7 fields. http://en.wikipedia.org/wiki/Cron#Format

[deleted]
Post reply on HN