crontool
Paste a schedule, read it in English, see the next runs.

Running a Job Every Second (Why Cron Can't)

There is no cron expression for every second. Cron's smallest field is the minute, so once per minute is its ceiling. For per-second work use a long-running process, a systemd timer, or a while-sleep loop — not cron.

Cron stops at one minute

The five cron fields are minute hour day-of-month month day-of-week. The fastest expression is * * * * *, once a minute. Seconds simply do not exist in the syntax.

Do it with a daemon or loop

If you truly need per-second cadence, run a persistent process instead of scheduling one. A minimal shell version:

while true; do /path/job.sh; sleep 1; done

Wrap that in a systemd service so it restarts on failure and logs to the journal.

systemd timer alternative

A timer with OnUnitActiveSec=1s is the idiomatic way to get sub-minute scheduling on modern Linux, with proper logging and accuracy control.

Reality check

Per-second polling is expensive and usually avoidable — prefer events, inotify, or a message queue if the goal is to react to changes quickly.

FAQ

Is there a cron expression for every second?

No. Cron's minimum interval is one minute (* * * * *). Per-second scheduling is outside cron entirely — use a daemon, a while-sleep loop, or a systemd timer with OnUnitActiveSec=1s.

How do I run a script every second on Linux?

Run a persistent process: while true; do job.sh; sleep 1; done, ideally as a systemd service, or use a systemd timer at OnUnitActiveSec=1s.

Why doesn't cron support seconds?

The classic cron format was designed around minute-level granularity and has only five time fields, the smallest being the minute. There is no seconds field to set.