finds.dev← search

// the find

MarkDickinson/scheduler

★ 2 · C · NOASSERTION · updated Jul 2026

batch job scheduler

A batch job scheduler in C for a single Unix server, built around per-day schedules, job and file dependencies, and role-separated admin access. It has run in production for years, and the code reads like it: plain, opinionated, and aimed at someone who wants cron with dependencies rather than a workflow platform.

The fast-fail CLI is a deliberate choice. A typo exits immediately instead of re-prompting, which suits shell scripting and makes interactive use slightly annoying, as the README admits. Dependencies can wait on other jobs finishing or on a file arriving, and the NULL* class runs only when nothing else is active, which is a sensible primitive for archiving the scheduler's own logs. The jobsched_security_checks tool audits each job script's owner and write permissions against its run-as user, which closes a real gap in root-run cron scripts. Catchup passes each job the date it was meant to run on, so a restart after downtime replays missed days with the right parameter, and per-job catchup overrides stop cleanup jobs from running several times.

Job scripts are hard-wired to /bin/bash, with csh support still a todo. The five-job concurrency cap is a constant in the source, so changing it means editing and rebuilding. Calendars are year-keyed and must be added by hand each January. A missing calendar puts dependent jobs into an error state rather than falling back to anything sensible. Recovery from an uncontrolled shutdown is minimal: any job running at the crash is marked failed and needs manual handling, which the author concedes can leave things in bad states after a power loss. The README says the last real code change was in 2009, the web interfaces are Perl CGI with a bundled cgi-lib.pl plus a Tomcat JSP variant, and no test directory appears in the tree. Adopting this means owning it.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →