shell多线程脚本

shell 脚本实现简单的多线程,示例如下:

     1 #!/bin/bash

      2 
      3 THREAD_NUM=5
      4 rm -rf run_tmp
      5 mkfifo run_tmp
      6 exec 9<>run_tmp
      7 for ((i=0;i<$THREAD_NUM;i++))
      8 do
      9   echo -ne "\n" 1>&9
     10 done
     11 
     12 while read line
     13 do
     14 {
     15 
     16   read -u 9
     17   {
     18     sh sub_scp.sh $line
     19     echo -ne "\n" 1>&9
     20   }&
     21 }
     22 done < mac
     23 wait
     24 
     25 

     26 # vim: set expandtab ts=2 sw=2 sts=2:

解析

第3行:指定多线程数量,这里是THREAD_NUM=5

第5行:创建管道 run_tmp

第6行:定义文件描述符9指向创建的管道(0、1、2是预留给stdin、stdout、stderr的文件描述符,不要使用)

第7~10行:将THREAD_NUM数量的“\n”字符写书管道,(可以写入其他字符)

第12~22行:执行多线程

22行读入文件mac中的一行内容,16行从管道中读出一行,18行是要执行的多线程脚本(或语句),19行是在18行结束后继续想传到中写入“\n”

第23行:等待所有线程结束后在退出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值