Human-friendly Cron replacement in NodeJS, based on english-time.
.jobs files look like this;
echo `date '+%d %h %H:%M'` > /tmp/now # => 1 second echo "Good Morning" # => every 6am echo "Hello World" # => 5 seconds, 200 milliseconds echo "CATS" # => every 4 hours and 15 minutes echo "YO" # => from tomorrow 6am, every 1h + 5 mins
And runs like this;
Looking for a handier simple tool? Try: run-after
$ npm install -g shell-jobs
Create a new file and call it
echo "every 3.5 hours" >> /tmp/logs # => 3 hours 30 seconds echo "every 5 minutes" >> /tmp/logs # => 5 minutes echo "good morning sir!" # comments here are ok. => 8am echo "every 4 weeks" >> /tmp/logs # => 4 weeks
Then run it;
$ shell-jobs new.jobs # globbing enabled
Process outputs are hidden by default. Use
--out to print the stdout of certain jobs;
$ shell-jobs new.jobs -o 3 # will be printing the stdout of the third job 'echo "this is a new day!"'
Wanna run it as a daemon on the background?
$ shell-jobs new.jobs -d
To investigate how shell-jobs parses your document, run
$ shell-jobs new.jobs -c
It'll list all commands with parsed schedulings and delay times.
To let shell-jobs output all the logs:
DEBUG=* shell-jobs new.jobs
USAGE shell-jobs [files] [options] OPTIONS -d --daemon Run as daemon on the background. -s --stop Stop the running daemon. -c --confirm Make sure if given jobs parsed correctly. -o --out Show outputs from the commands at specified index(es). e.g -o 0, 2, 3 -v --version Show version and exit -h --help Show help and exit
List of Recognized Time Units