顺序:for i in {1..1000}; do do_something $i; done- 太慢
并行:for i in {1..1000}; do do_something $i& done- 负载过多
如何并行运行命令,但不超过例如每时 20 个实例?
现在通常使用 hack like for i in {1..1000}; do do_something $i& sleep 5; done,但这不是一个好的解决方案。
更新 2:将接受的答案转换为脚本:http : //vi-server.org/vi/parallel
#!/bin/bash
NUM=$1; shift
if [ -z "$NUM" ]; then
echo "Usage: parallel <number_of_tasks> command"
echo " Sets environment variable i from 1 to number_of_tasks"
echo " Defaults to 20 processes at a time, use like …Run Code Online (Sandbox Code Playgroud)