How to setup CRON job to run every 10 seconds in Linux?
PhpLinuxApacheCronPhp 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.