Running a Job Every 10 Seconds (Cron Can't — Here's How)
Cron's finest resolution is one minute, so there is no cron expression for every 10 seconds. The honest workarounds: run a per-minute cron job that loops with sleep 10 six times, or use a systemd timer with OnUnitActiveSec=10s.
Why cron can't do seconds
A cron line has five fields: minute hour day-of-month month day-of-week. The smallest is minute, so the most frequent schedule cron can express is * * * * * — once per minute. There is no seconds field.
Workaround 1: per-minute job with a sleep loop
Run every minute and fire six times, 10 seconds apart:
* * * * * for i in 0 1 2 3 4 5; do /path/job.sh & sleep 10; done
The last iteration's sleep pushes just into the next minute, which the next cron tick covers.
Workaround 2: systemd timer (cleaner)
Create a timer unit with OnUnitActiveSec=10s and AccuracySec=1s. systemd handles sub-minute cadence natively and logs each run.
When you think you need 10s, you often don't
Polling every 10 seconds is usually a sign you want an event/webhook instead. If it is a health check, most monitors already poll on their own schedule.
FAQ
What is the cron expression for every 10 seconds?
There isn't one. Cron's smallest unit is one minute (* * * * * is the fastest). For 10-second cadence use a per-minute job with a sleep 10 loop, or a systemd timer with OnUnitActiveSec=10s.
Can crontab run faster than once a minute?
No. The cron format has no seconds field, so once per minute (* * * * *) is the maximum frequency. Sub-minute needs a sleep loop or systemd/other scheduler.
How do I run something every 10 seconds on Linux?
Use a systemd timer (OnUnitActiveSec=10s) for a clean solution, or a per-minute cron job that calls your script six times with sleep 10 between calls.