一般我们在linux上十一shell命令的批量执行操作,一般使用for或者while 循环进行操作,但是这样有一个问题,for或者while本质上是串行的,并不能,如果某一个命令执行耗费的时间比较长,就会等待很长的时间,很浪费时间;
将被执行的命令运行为后台执行,可以实现并发执行多条命令;
for ((i=0;i<10;i++));do echo "done ";done & wait
但是上述方法,如果在i的值很大的时候,会产生大量的进行,造成系统严重的问题,所以,需要控制进行数,下面的脚本会保证同一时间只有10个进程在运行;
[root@linux-node1 ~]# cat parallel.sh #!/bin/shtempfifo=$$.fifoecho $tempfifotrap "exec 100>&-;exec 1000<&-;exit 0" 2mkfifo $tempfifoexec 1000<>$tempfiform -rf $tempfifofor ((i=0;i<10;i++))doecho >&1000donefor((i=0;i<300;i++))doread -u1000{sleep 5 echo "Done!"echo $iecho >&1000}&echo "--------------"donewaitecho "done !!!!!!!!!"