Description

Scron is a scheduler for laptops/machines which aren't on 24/7.

Installation

$ gem install scron

Then configure cron to run it. I recommend every 2 hours, but you can put any interval here:

$ crontab -e
0 */2 * * * scron -r

Usage

Configure jobs in $HOME/.scron (scron -e to edit). This example means run cmd arg1 arg2 at least once every 30 days:

30d cmd arg1 arg2

You can also specify lower bounds like day of week (Su, Mo, Tu, We, Th, Fr, Sa), day of month (23rd), or day of year (4/15):

Mo,Fr    cmd1
1st,23rd cmd2
4/15     cmd3

cmd1 will attempt to run on Monday and Friday. If your machine is off the entire day, it will run as soon as possible. Here's an example timeline:

  • Mo: machine is off, nothing happens
  • Tu: machine is on, cmd1 runs to make up for Monday
  • We: already ran, nothing happens
  • Th: already ran, nothing happens
  • Fr: machine is on, cmd1 runs

Notes

An exit status of 0 is considered a success. Anything else is considered a failure and scron will attempt to re-run it again in 2 hours.

$HOME/.scrondb keeps the timestamps of the last run commands.

$HOME/.scronlog has the stdout, timestamps, and exit status of last scheduled commands.

TODO

  • rename process to scron

License

Copyright Hugh Bien - http://hughbien.com. Released under BSD License, see LICENSE.md for more info.