例子

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
#!/bin/bash
temp_fifo_file=$$.info        #以当前进程号,为临时管道取名
mkfifo $temp_fifo_file        #创建临时管道
exec 6<>$temp_fifo_file       #创建标识为6,可以对管道进行读写
rm $temp_fifo_file            #清空管道内容
function f_sleep              
{
  sleep 2
} 
 
temp_thread=2                 #进程数
 
for ((i=0;i<temp_thread;i++)) #为进程创建相应的占位
do
  echo                        #每个echo输出一个回车,为每个进程创建一个占位
done >&6                      #将占位信息写入标识为6的管道
 
for ((i=0;i<6;i++))          
do
  read                        #获取标识为6的占位
  {
    f_sleep
    echo $$,$i,`date`
    sleep 5
    echo $$,$i,`date`
    echo >&6                  #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
  }&                          #>>>>>在后台执行{}中的任务
done <&6                      #将标识为6的管道作为标准输入
 
wait                          #等待所有任务完成
exec 6>&-                     #关闭标识为6的管道

 

例子

#!/bin/bash
temp_fifo_file=$$.info        #以当前进程号,为临时管道取名
mkfifo $temp_fifo_file        #创建临时管道
exec 6<>$temp_fifo_file       #创建标识为6,可以对管道进行读写
rm $temp_fifo_file            #清空管道内容
function f_sleep              
{
  sleep 2
} 
 
temp_thread=2                 #进程数
 
for ((i=0;i<temp_thread;i++)) #为进程创建相应的占位
do
  echo                        #每个echo输出一个回车,为每个进程创建一个占位
done >&6                      #将占位信息写入标识为6的管道
 
for ((i=0;i<6;i++))          
do
  read                        #获取标识为6的占位
  {
    f_sleep
    echo $$,$i,`date`
  }&                          #>>>>>在后台执行{}中的任务
  sleep 5
  echo $$,$i,`date`
  echo >&6                    #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
done <&6                      #将标识为6的管道作为标准输入
 
wait                          #等待所有任务完成
exec 6>&-                     #关闭标识为6的管道

 

例子

#!/bin/bash
temp_fifo_file=$$.info        #以当前进程号,为临时管道取名
mkfifo $temp_fifo_file        #创建临时管道
exec 6<>$temp_fifo_file       #创建标识为6,可以对管道进行读写
rm $temp_fifo_file            #清空管道内容
function f_sleep              
{
  sleep 2
  echo >&6                    #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
} 
 
temp_thread=2                 #进程数
 
for ((i=0;i<temp_thread;i++)) #为进程创建相应的占位
do
  echo                        #每个echo输出一个回车,为每个进程创建一个占位
done >&6                      #将占位信息写入标识为6的管道
 
for ((i=0;i<6;i++))          
do
  read                        #获取标识为6的占位
  {
    f_sleep
    echo $$,$i,`date`
  }&                          #>>>>>在后台执行{}中的任务
  sleep 5
  echo $$,$i,`date`
done <&6                      #将标识为6的管道作为标准输入
 
wait                          #等待所有任务完成
exec 6>&-                     #关闭标识为6的管道

 

例子

#!/bin/bash
temp_fifo_file=$$.info        #以当前进程号,为临时管道取名
mkfifo $temp_fifo_file        #创建临时管道
exec 6<>$temp_fifo_file       #创建标识为6,可以对管道进行读写
rm $temp_fifo_file            #清空管道内容
function f_sleep              
{
  sleep 2
  echo >&6                    #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
} 
 
temp_thread=2                 #进程数
 
for ((i=0;i<temp_thread;i++)) #为进程创建相应的占位
do
  echo                        #每个echo输出一个回车,为每个进程创建一个占位
done >&6                      #将占位信息写入标识为6的管道
 
for ((i=0;i<6;i++))          
do
  read                        #获取标识为6的占位
  {
    f_sleep
    echo $$,$i,`date`
    sleep 5
    echo $$,$i,`date`
  }&                          #>>>>>在后台执行{}中的任务
done <&6                      #将标识为6的管道作为标准输入
 
wait                          #等待所有任务完成
exec 6>&-                     #关闭标识为6的管道

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄