控制shell脚本并发进程数shell命令后面加&,可以让这条shell命令异步的执行。例如: sleep 10 & 执行这条命令后,并不会阻塞10秒,而是立即返回。 如果将这种方法用在while循环中,则可以实现多进程并行处理。例如,test.sh文件为: while read line; do sleep 10 & done 在执行ls -l | test.sh 时,会有多个进程并行启动,进程数等于ls -l返回结果的行数。 而有时为了避免并发进程数过多,导致机器卡死,需要限制并发的数量。以下代码实现了该功能: while read line; do joblist=($(jobs -p)) while (( ${#joblist[*]} >= 20 )) do sleep 1 joblist=($(jobs -p)) done sleep 10 & done |
|