Crontab计划问题

时间:2015-08-03 13:24:57

标签: cron crontab

我有几个每3分钟运行一次的脚本,日程安排如下:

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

我认为这些脚本同时运行,但我希望这些脚本每3分钟运行一次但不能同时运行。请告诉我,我该怎么做到这一点。

4 个答案:

答案 0 :(得分:1)

你无法通过你所拥有的线来达到这一点,但这些线路总是在同一时间运行。但是,您可以简单地创建一个通过cron调用的“主”脚本,然后一个接一个地调用脚本。

*/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');
?>

编辑:

根据您的服务器设置 - 安装node.js.你可以为每秒设置一个cron包。也许这可以帮助..

答案 1 :(得分:1)

你可以但不能使用这种语法,而应该使用这种语法:

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

答案 2 :(得分:1)

如果你只是希望每个脚本依次执行,第二个脚本在第一个脚本完成之前不会启动,依此类推,只需将它们全部放在一个cron命令中即可。

cron通过将命令字符串传递给/bin/sh来调用每个命令 - shell可以很容易地按顺序调用几个命令。

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

答案 3 :(得分:0)

你觉得脚本运行之间的几秒钟就够了吗? 这样的命令怎么样?

*/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

您也可以用随机等待时间替换固定等待时间。 而不是sleep(2)尝试通用sleep(rand(1,10))。 我希望这可能有用

相关问题