inputloop · free software · GPL-3.0-or-later
chadtab
A successor to cron. One plain table runs your scheduled work on GNU/Linux and on Windows alike, keeps a record of every run, and shows you how it has been going.
# chadtab
PATH=/usr/local/bin:/usr/bin:/bin
* backup cron:17 3 * * * catchup
| ---> !sh backup.sh
| % <--- @ status bytes ..note
| -->> log/backup.jsonl
| ==> c4:reg/hosts avalon backup $status
* pulse every:15m+4m
* start boot
What it keeps from cron
A table you can read, keep under version control, and copy between machines. Five-field cron times, with month and day names.
What it adds
- The same table on Windows, without the Task Scheduler:
chadtab startup starts it when you sign in. Python's standard library is all it needs.
- Its own record: every run is one line of JSON; each job's last result and recent history are kept where any tool can read them.
- A view:
chadtab top in a terminal, M-x chadtab-status in Emacs.
- Catching up: a job marked
catchup runs once for a time it missed while the machine slept.
- Run-levels: a job can wait until its host is at the level it needs.
- Guarded writes into C4 registries: a fact a job learns is written twice, by two writers that read each other back, and nobody sees it until both agree.
Checked twice
Every clock is read by two programs that share no code, one in Python and one in Emacs Lisp, against rows counted by hand on a calendar. Seven planted faults are each caught by the tests. The tests run here, hourly, by chadtab itself: see the latest run.
Get it
The source lives on code.bru.st, for now as a private repository; this page will link it when it opens. A Debian package comes with each release.