2024年11月Linux系统下多线程的Shell脚本介绍

发布时间:

  ⑴在Linux下使用Shell脚本可以方便地实现多线程的操作,不仅可以用Shell脚本后台运行多线程,还可以控制多线程的数量。下面就来介绍一下Linux系统下多线程的Shell脚本。

  ⑵在bash中,我们通过后台运行(&实现多线程。

  ⑶for((i=;i《=pairs;i++

  ⑷mongo=“mongo_$i”

  ⑸acmeair_web=“acmeair_web_$i”

  ⑹docker run --name $mongo -d -p $port_m: mymongodb

  ⑺docker run -d -p $port: --name $acmeair_web --link ${mongo}:mongo acmeair/web

  ⑻((port++

  ⑼((port_m++

  ⑽我们加入了 { }& 这样在{ }里的就可以在后台执行了,上面相当于pairs个同时执行了, wait是等待它们都执行完。

  ⑾上面我们都是对并发数不可控,下面实现可控。

  ⑿tmp_fifofile=“/tmp/$$.fifo”

  ⒀mkfifo $tmp_fifofile # 新建一个fifo类型的文件

  ⒁exec 《》 $tmp_fifofile #将fd指向fifo类型

  ⒂rm $tmp_fifofile

  ⒃thread = # 此处定义线程数

  ⒄for ((i=;i《$thread;i++; do

  ⒅done 》& #事实上就是在fd中放置了$thread个回车符

  ⒆for ((i=;i《;i++;do #循环次

  ⒇read -u # 一个read -u命令执行一次,就从fd中减去一个回车符,然后向下执行

  ⒈# fd中没有回车符时候,就停在这里了,从而实现线程数量控制

  ⒉docker run 。。。 mongodb

  ⒊docker run 。。。 acmeair/web

  ⒋echo “subprocess is finished”

  ⒌echo “error”

  ⒍echo 》& #当进程结束以后,再向fd中加上一个回车符,即补上了read -u减去的那个

  ⒎wait # 等待所有后台子进程结束

  ⒏exec 》&- #关闭fd

  ⒐以上就是Linux系统下多线程的Shell脚本了,当然运行多线程Shell脚本只是基础。还可以用多线程来进行编程,具体的方法可以参考:Linux下如何实现shell多线程编程。