Crontab 计划问题

Crontab schedule issue

我有几个脚本 运行 每 3 分钟一次,时间表如下所示:

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

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

您无法用现有的线路达到此目的,这些线路总是同时 运行。但是,您可以简单地创建一个 "master" 脚本,通过 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

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

如果您只是希望每个脚本依次执行,第二个脚本在第一个脚本完成后才开始,依此类推,只需将它们全部放在一个 cron 命令中即可。

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

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