我需要在同一bash-script
进程的php
中拥有一个池。该池必须包含10个进程,并且只要在池中完成作业,就必须启动一个新进程,以便始终并行运行10个进程。我真的很喜欢bash脚本,所以我需要一些帮助才能开始。
谢谢...
答案 0 :(得分:2)
使用文档here查看GNU Parallel - here。
要执行您想要的操作,您可以创建一个包含作业队列的文件,最初为空:
# Clear queue out
> jobqueue
然后你可以开始处理工作,一次不超过10个:
tail -f jobqueue | parallel -j 10
然后你进入另一个终端窗口,但是在同一个目录中并提交这样的工作:
echo "sleep 5;date" >> jobqueue
或者,如果你的工作是PHP脚本,也许你会做这样的事情:
echo "./myscript.php" >> jobqueue
或者,您可以提交40个这样的工作:
for i in {1..40}; do echo "sleep 5;date +'%H:%M:%S Job $i'"; done >> jobqueue
或者,完全不同的建议,如果您已经有一个已知的1000个作业列表的文件,您可以忘记我上面建议的作业队列文件,并将它们全部一起提交到10这样的时间:
parallel -j 10 < joblist.txt
答案 1 :(得分:0)
如果您不想使用parallel
,可以尝试以下方式:
# loop ...
if [[ $(jobs -p|wc -l) -ge 10 ]]; the
wait "$(jobs -p|head -1)" || echo "Job ended with failure"
fi
./your_script &
# end loop ...