When Clocks Go Back, Check Your Linux Cron Jobs

A Linux server sits behind a clock and timeline showing the local hour repeating during a clock change. Checklists & Cheat Sheets
A practical checklist for checking Linux cron jobs and systemd timers before the November 1, 2026 clock change—and protecting important scheduled work.

Linux scheduling · Guidance checked October 31, 2026

On Sunday, November 1, 2026, clocks in most of the United States move back from 2:00 a.m. to 1:00 a.m. For a Linux server, that creates a practical question: if a scheduled job is set for 1:30, can it run twice?

The answer depends on the scheduler, its implementation and the server’s time-zone settings. Some cron documentation says matching jobs can run twice in a repeated hour; Cronie documents cases where it avoids a duplicate run. A local clock change is a reason to review important jobs, not proof that one has failed.

What Actually Happens When the Clock Goes Back?

In most U.S. locations that observe daylight saving time, the local clock reaches 2:00 a.m. on November 1 and returns to 1:00 a.m. The hour between 1:00 and 2:00 therefore occurs twice. The date and rule are confirmed by the U.S. National Institute of Standards and Technology. Other countries and regions change clocks on different dates or do not use seasonal clock changes.

A server follows its configured time zone, not the time zone of the person logged in from a laptop. If a VPS uses UTC, the U.S. local change does not make its UTC clock repeat an hour. Check the host before assuming the transition affects a job.

One local hour appears twice when clocks go back A timeline moves from 12:30 to 1:30 daylight time, returns to 1:00 standard time, and reaches 1:30 again before continuing to 2:30. LOCAL WALL-CLOCK TIME 12:30 1:00 1:00 again 1:30 2:30 first 1:30 repeated 1:30
The wall clock repeats an hour. A scheduler’s response depends on its implementation and the time basis used by the job.

Why You Should Check Your Scheduler, Not Guess

Linux cron is not one identical implementation on every distribution. The current crontab manual on man7 says a matching job can run twice when a local time occurs more than once. The Cronie manual describes different handling for certain fixed-time jobs during a backward clock change: it avoids running the same job twice. Which guidance applies depends on the daemon and version actually installed.

A systemd timer using OnCalendar= is a real-time, calendar-based schedule; directives such as OnBootSec= are elapsed-time schedules. Do not apply a cron rule to both. systemd also does not restart a service that is already active when its timer elapses, but that alone does not prove that a task ran exactly once on a given local date. See the systemd timer documentation and inspect your specific unit.

Question 1 Which clock? Does the job use local wall time, an explicit time zone or UTC?
Question 2 Which scheduler? Cron implementation, systemd calendar timer or elapsed-time timer?
Question 3 What if it repeats? Could a second run charge, send, delete or overwrite something?

The Linux Clock-Change Checklist

These checks are read-only unless you choose to change a job. They help establish what is configured; they do not simulate the clock change or guarantee a task will succeed.

01

Check the server’s time basis

Run timedatectl. Note the local time, configured time zone and whether network time is synchronized.

Evidence and next action

Record: Host name, time zone and sync status. Decide: If the host uses UTC, the U.S. local clock change does not repeat an hour on that host. If its zone observes the change, continue below.

02

Find the cron daemon and its version

Identify the package and daemon installed by your distribution. Read its local cron(8) and crontab(5) manuals.

Evidence and next action

Record: Distribution, cron package and version. Decide: Follow that implementation’s DST section; do not assume another distribution behaves the same.

03

List jobs scheduled in the repeated hour

Review the current user’s crontab -l and authorized system-wide schedules. Look for jobs around 1:00–1:59 in the server’s local zone.

Evidence and next action

Record: Job owner, schedule, command and expected effect. Decide: If the command has financial, customer or destructive effects, inspect its repeat-safety before the transition.

04

Check for a per-table time zone

Look for CRON_TZ or other scheduler-specific time-zone settings in the relevant crontab or service configuration.

Evidence and next action

Record: The effective zone for each important job. Decide: Resolve ambiguous local scheduling with the job owner; changing the server’s global zone can affect other services.

05

Review systemd calendar timers separately

Use systemctl list-timers --all, then inspect relevant units with systemctl cat example.timer. Check whether they use OnCalendar= or elapsed-time directives.

Evidence and next action

Record: Timer name, schedule, target service and time zone. Decide: Use systemd-analyze calendar 'EXPRESSION' to parse a calendar expression and see its next elapse; verify behavior for your systemd version rather than inferring duplicate-run behavior from cron.

06

Make important jobs safe to repeat

For backups, billing, cleanup, email and data imports, ask what a second execution would do. Check whether the application uses a unique run ID, lock or duplicate guard.

Evidence and next action

Record: The owner’s repeat-safety explanation and any guard in place. Decide: Add an application-level idempotency or locking control where needed; do not rely on the clock changing only once.

07

Check backups and recovery before changing schedules

For a job that could overwrite or delete data, verify the last successful backup and the recovery route before editing its schedule.

Evidence and next action

Record: Most recent successful run and backup location. Decide: If recovery is uncertain, ask the service owner before making a schedule change.

08

Plan how you will verify the run

Know where the job writes its output and which service or application record confirms completion. Compare timestamps in UTC where possible.

Evidence and next action

Record: The expected result and log location. For systemd services, journalctl --utc -u example.service displays journal times in UTC. Decide: Compare the run record with the intended outcome, not just the scheduler’s “last triggered” time.

A Hypothetical Example: A Nightly Billing Job

Suppose a store has a cron entry scheduled for 1:30 a.m. local time that creates invoices from pending orders. Its server is configured for a U.S. time zone that changes clocks on November 1. The job is not idempotent: if it processes the same orders twice, it could create duplicate invoices.

The administrator first checks the installed cron implementation’s manual and confirms that the schedule falls inside the repeated hour. They review the script and discover it has no durable record of which orders were already invoiced. Before the transition, the application owner adds and verifies a duplicate guard in staging, then monitors the production run and invoice records.

This is a hypothetical example, not a report of a real incident or a test result. The key lesson is to trace the whole chain: clock and time zone → scheduler rule → command behavior → business result.

What Should You Do With Your Findings?

Choose the next step from the evidence you have
What you foundNext action
Host uses UTC or a zone with no clock changeDocument the time basis and confirm no per-job zone overrides it.
A critical cron job falls in the repeated hourCheck the installed daemon’s documented behavior and make the task safe to repeat.
A calendar systemd timer falls in that hourInspect the timer and target service; verify schedule interpretation for the installed systemd version.
Job behavior or ownership is unclearDo not make a last-minute global time-zone change. Ask the application owner and record the decision.
The run completedVerify the output or business record, then compare timestamps and logs in UTC.

The clock-change date and scheduler references were checked October 31, 2026. Cron behavior varies by implementation and version. This guide does not report a live test or a confirmed incident.

Rate article
Servers Academy
Add a comment