linux shell并发执行命令
一般我们在linux上十一shell命令的批量执行操作,一般使用for或者while 循环进行操作,但是这样有一个问题,for或者while本质上是串行的,并不能,如果某一个命令执行耗费的时间比较长,就会等待很长的时间,很浪费时间;
将被执行的命令运行为后台执行,可以实现并发执行多条命令;
1 | for ((i = 0 ;i< 10 ;i + + ));do echo "done " ;done & wait |
但是上述方法,如果在i的值很大的时候,会产生大量的进行,造成系统严重的问题,所以,需要控制进行数,下面的脚本会保证同一时间只有10个进程在运行;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | [root@linux - node1 ~] # cat parallel.sh #!/bin/sh tempfifo = $$.fifo echo $tempfifo trap "exec 100>&-;exec 1000<&-;exit 0" 2 mkfifo $tempfifo exec 1000 <>$tempfifo rm - rf $tempfifo for ((i = 0 ;i< 10 ;i + + )) do echo >& 1000 done for ((i = 0 ;i< 300 ;i + + )) do read - u1000 { sleep 5 echo "Done!" echo $i echo >& 1000 }& echo "--------------" done wait echo "done !!!!!!!!!" |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步