Crontab计划问题

Crontab计划问题,cron,crontab,Cron,Crontab,我有几个脚本每3分钟运行一次,日程安排如下: */3 * * * * /some/script1.php */3 * * * * /some/script2.php */3 * * * * /some/script3.php 我假设这些脚本同时运行,但我希望这些脚本每3分钟运行一次,但不要同时运行。请告诉我如何才能达到这个目标。你不能用现有的线路达到这个目标,这些线路将始终在同一时间运行。但是,您可以简单地创建一个通过cron调用的“主”脚本,然后逐个调用这些脚本 */3 * * * * /

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

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

我假设这些脚本同时运行,但我希望这些脚本每3分钟运行一次,但不要同时运行。请告诉我如何才能达到这个目标。

你不能用现有的线路达到这个目标,这些线路将始终在同一时间运行。但是,您可以简单地创建一个通过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,4,7,10,13,16,etc... * * * * /some/script1.php
2,5,8,11,14,17,etc... * * * * /some/script2.php
and so on....

您认为脚本运行之间的几秒钟就足够了吗? 像这样的命令怎么样

*/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
*/3****echo”“| php/some/script1.php
*/3****echo”“| php/some/script2.php
*/3****echo”“| php/some/script3.php
您还可以用随机等待时间代替固定等待时间。 不要使用
sleep(2)
试试通用的
sleep(rand(1,10))

如果您只想让每个脚本依次执行,而第二个脚本在第一个脚本完成后才开始执行,那么我希望这会很有用,以此类推,只需将它们全部放在一个cron命令中即可

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

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

我不认为你可以顺便说一句,这不是一个很好的问题,你应该把它贴在服务器上