Skip to content

Scheduling

The builder's five modes and the cron they translate into; the workspace timezone and why jobs have none of their own.

A job's schedule is always one five-field cron expression. The builder in the form only helps to assemble it — Runjet stores and checks cron, and whatever the builder cannot express you write in Advanced (raw cron) mode.

The builder

The Schedule mode switch has six positions. The first five make an expression; the sixth leaves it to you.

ModeWhat you give itCron
Every N minutesN from 1 to 59*/N * * * *
Every N hoursN from 1 to 230 */N * * * — always on the hour
Daily at timea timeM H * * *
Weekly on daya weekday and a timeM H * * D, Sunday is 0, Saturday 6
Monthly on daya day of the month, 1–31, and a timeM H D * *
Advanced (raw cron)an expressionwhatever you write

When you edit a job the builder recognises an expression it could have made itself and opens it in the right mode; anything else opens as Advanced. The same recognition is behind the text in the job list — Every 5 minutes, Daily at 09:00, Weekly on Monday at 07:30 — and an expression that fits none of the patterns is shown as it is.

Two things the builder cannot do and cron can: a range of days (1-5 for weekdays) and several values in one field (0 6,18 * * *). Both, along with steps and the names of months and days, are in the cron reference.

Five fields, from the left: minute, hour, day of month, month, day of week. The expression 30 2 * * 1-5 means every weekday at 02:30.

Timezone

Every workspace has one timezone, and all of its schedules are evaluated in it. 0 2 * * * means two in the morning in the workspace's zone, daylight saving included — an hour that does not exist on a given day simply does not arrive, and an hour that happens twice runs the job once.

The zone is chosen at registration, guessed from the browser, and changed afterwards on the Workspace screen by an admin. A workspace that never chose one is in UTC.

Changing it moves every job in absolute terms, and does not touch a single schedule. 0 3 * * * keeps saying three; the zone decides which three. Moving from UTC to Europe/Prague therefore makes a nightly job run two hours earlier than it did in summer — the expression is not rewritten, because a schedule that changed under you would be worse than one that moved.

Why jobs have no zone of their own

Every workspace has its own cron engine, started in its own zone; that is what makes 0 2 two in the morning without the zone having to be encoded into the expression. A zone per job would mean either an engine per job, or an expression carrying its zone with it — which the dashboard's "next up" band would then have to know how to convert. A job that needs a different zone from the rest of the workspace converts the hour itself, for now.

When a schedule takes effect

A change to a schedule applies the moment it is saved — the running engine takes it up without a restart. A disabled job (Enabled off) is not in the engine at all, which is why you will not see it in what is next up either. What becomes of an occurrence that fell during an outage is for missed runs.