How to setup CRON job to run every 10 seconds in Linux?

PhpLinuxApacheCron

Php Problem Overview


I need to run a CRON job every 10 seconds from started time.

In Linux how to run a CRON job on every 10 seconds from the time its started?

I am trying to solve that as following: when I make a request (or start) at 04:28:34 it should start at 04:28:44 not at 4:28:40

This is what I have done

# m h  dom mon dow   command
*/10 * * * * /usr/bin/wget http://api.us/application/

What did I do wrong? Why does this not trigger wget every 10 seconds?

Php Solutions


Solution 1 - Php

To elaborate on Sougata Bose's answer, I think the OP wants a command to be run every 10 seconds from a start time; not 10 seconds after the first minute and every subsequent minute.

cron only has a resolution of 1 minute (there are other tools I think that may have finer resolutions but they are not standard on unix).

Therefore, to resolve your issue you need 60 seconds / 10 seconds = 6 cron jobs, each with a sleep.

e.g. run crontab -e and add the following lines to your chosen editor:

* * * * * ( /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 20 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 30 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 40 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 50 ; /usr/bin/wget http://api.us/application/ )  

Solution 2 - Php

Another option is to edit your crontab with crontab -e and write:

* * * * * for i in {1..6}; do /usr/bin/wget http://api.us/application/ & sleep 10; done

Solution 3 - Php

*/10 * * * * will run every 10 min.
*/10 * * * * * will run every 10 sec.

You can checkout the cron editor for more options.

Solution 4 - Php

Using commas in seconds field works too:

0,10,20,30,40,50 * * * * *

Solution 5 - Php

Use watch instead; for example:

watch -n10 -x your_command

Solution 6 - Php

If something should run every 10 seconds it does not have to be cron job. It can be a script with endless loop with sleep inside like:

while true
do
  # or whatever command you need to run
  rm -rf /var/www/some-directory
  sleep 10
done

and run it with

nohup bash my-endless-script.sh 

which will run it on background and will continue also if you shut down the terminal.

You can kill the run with kill command.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondev1234View Question on Stackoverflow
Solution 1 - PhpRodentView Answer on Stackoverflow
Solution 2 - PhpПися КамушкинView Answer on Stackoverflow
Solution 3 - PhpDaniel GivoniView Answer on Stackoverflow
Solution 4 - Phpjava-addict301View Answer on Stackoverflow
Solution 5 - PhpОлександр ВойнаровськийView Answer on Stackoverflow
Solution 6 - PhpČamoView Answer on Stackoverflow