Shell-并发执行 2022-07-26 shell all, shell 评论 Shell-并发处理并发执行12345678910111213141516171819202122[root@std_centos test]# cat aa.shf1(){tail -f 1.txt}f2(){tail -f 2.txt}f3(){tail -f 3.txt}f4(){echo "finished"}f1 & #f1-f3 并发执行f2 &f3 &wait #wait的作用:等待前面的函数执行完成f4 #最后执行f4 控制并发进程数12345678910111213141516171819202122[root@std_centos test]# cat cc.shtempfifo=/tmp/$$.fifo ##获取当前程序的pid,以pid作为文件名,防止重复。mkfifo $tempfifo ##创建有名管道文件exec 1000<>$tempfifo ##将文件描述符1000与管道文件关联rm -rf $tempfifo ##删除管道文件,只保留文件描述符for ((i=1; i<=3; i++)) ##写入3行(空行)到文件描述符1000doecho >&1000donefor ((j=1;j<=10;j++)) ##队列总共10个doread -u1000 ##读取1个空行(读取后,文件描述符减少1个空行,如没空行则hold住等待,知道有新增空行,以达到进程数控制的效果){tail -f $j.txtecho >&1000 ##写入1个空行(写入后,文件描述符又增加1个空行)}&echo "running:"$jdonewaitexec 1000<&- #关闭文件描述符的读exec 1000>&-echo "--finished--"