linux shell並發執行命令


一般我們在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/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 !!!!!!!!!"

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM