There are already many cron daemons out there, and I honestly don't remember how I came about looking into such tools, but as I did I realized I wasn't too happy with the way most worked.
For instance, they all seem to operate on the same model: wake up at the top of every minute, to check if there's any job to run or not. Many also include some operations other than dropping privileges to the right user, such as setting up the environment, sometimes via definitions inside the cron tables...
I wanted something simpler. Small, simple, that does as little as possible.
And so slicd was born. slicd is a Linux cron daemon aiming to be small, simple and lightweight. It doesn't try to support every possible feature under the sun, and while not a requirement is perfectly fitted to run under a supervision suite.
It comes as a few modules :
slicd-parser : to parse crontabs into one "compiled" file
The parser's job is to process all system & user crontabs and compile them into a single file, in a ready-to-use format for the scheduler.
slicd-sched : the scheduler, aka the actual cron daemon
The scheduler simply loads the compiled crontabs, determines the next time a job needs to run and simply waits for it. It doesn't need to wake up every minute (as most cron daemons do) and handles time changes (manual, NTP, DST...) fine.
It also doesn't actually run anything, but simply prints on its stdout one line for each job to run, in the form
slicd-exec : the exec daemon, to actually run jobs
The scheduler's stdout is aimed to be piped into this daemon's stdin, which will handle forking and executing the command line. It will report all forks & reaped children on its stdout, as well as anything printed on a child's stdout or stderr.
It is important to note that it doesn't do any drop of privileges or environment changes, instead you're supposed to do this making sure it execs into the right tools; such as one to drop privileges to a specific user, one to set up the correct environment, etc
In addition, a few extra tools are provided, meant to be used alongside slicd-exec(1) :
- setuid : drop privileges to the specified user
- miniexec : minimal parsing & execing of command-line
More info, Download links...
You'll find more information about slicd and its different modules, as well as download links & such, on the slicd page.