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

Can Cron Run Every Second?

No — cron's finest resolution is one minute, so there is no expression for every second. To run something every second, use a shell loop with sleep, a systemd timer with a sub-minute interval, or a long-running process instead.

Why cron can't do seconds

A crontab line has no seconds field — the smallest unit is the minute (* * * * * = every minute). This is by design; cron was never meant for sub-minute scheduling.

Workaround 1: sleep loop inside a minute

Run a script every minute that loops with sleep:

* * * * * /usr/bin/bash -c 'for i in $(seq 1 60); do /path/task.sh; sleep 1; done'

This fires roughly once a second for the minute, then the next cron tick restarts it. Keep task.sh fast so runs don't overlap.

Workaround 2: systemd timer

A systemd timer supports sub-minute intervals: set OnUnitActiveSec=1s in a .timer unit. This is the cleaner, supervised option for real per-second work.

Workaround 3: a daemon

For true every-second work, a small long-running service (a loop, or a job queue worker) is more reliable than starting a process 60 times a minute.

FAQ

Is there a cron expression for every second?

No. Cron's minimum interval is one minute — there is no seconds field. Use a sleep loop, a systemd timer (OnUnitActiveSec=1s), or a daemon instead.

How do I run a command every second with cron?

Run a per-minute cron job that loops: for i in $(seq 1 60); do task.sh; sleep 1; done. It approximates every second between minute ticks.

What's better than cron for sub-minute schedules?

A systemd timer with OnUnitActiveSec set to seconds, or a long-running worker process. Both handle sub-minute intervals cron cannot.