Michael  Kolodiychuk
Michael Kolodiychuk

Reputation: 23

Crontab schedule issue

I have several scripts that are run every 3 minutes and schedule looks like this:

*/3 * * * * /some/script1.php
*/3 * * * * /some/script2.php
*/3 * * * * /some/script3.php

I suppose that these scripts run at the same time, but I wish that these scripts run every 3 minute but not in the same time. Tell me please how can I reach this.

Upvotes: 2

Views: 68

Answers (4)

Keith Thompson
Keith Thompson

Reputation: 263177

If you just want each script to execute in turn, with the second not starting until the first has finished, and so forth, just put them all in a single cron command.

cron invokes each command by passing the command string to /bin/sh -- and the shell can very easily invoke several commands in sequence.

*/3 * * * * /some/script1.php ; /some/script2.php ; /some/script3.php

Upvotes: 1

Massimo Borgogno
Massimo Borgogno

Reputation: 117

do you think a couple of seconds between scripts run could be enough ? what about a command like this ?

*/3 * * * * echo "<?php echo 'Start ...';sleep(2);echo Go; ?>"|php /some/script1.php
*/3 * * * * echo "<?php echo 'Start ...';sleep(4);echo Go; ?>"|php /some/script2.php
*/3 * * * * echo "<?php echo 'Start ...';sleep(6);echo Go; ?>"|php /some/script3.php

You could also substitute fixed waiting time with random waiting time. Instead of sleep(2) try a generic sleep(rand(1,10)). I hope this could be useful

Upvotes: 0

baao
baao

Reputation: 73211

You can't reach that with the lines you are having, those will allways be running at the same times. However, you can simply create one "master" script that gets called via cron and then calls the scripts one after the other.

*/3 * * * *  /usr/bin/php /some/masterscript.php

masterscript.php:

<?php
exec('/usr/bin/php /some/script1.php');
exec('/usr/bin/php /some/script2.php');
exec('/usr/bin/php /some/script3.php');
?>

EDIT:

Depending on your server's setup - install node.js. There's a cron package you can set for every second. Maybe this can help..

Upvotes: 1

michelem
michelem

Reputation: 14590

You can but not with that syntax, instead you should use this kind of syntax:

1,4,7,10,13,16,etc... * * * * /some/script1.php
2,5,8,11,14,17,etc... * * * * /some/script2.php
and so on....

Upvotes: 1

Related Questions