码迷,mamicode.com
首页 > 系统相关 > 详细

shell 并发

时间:2019-07-26 19:01:14      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:get   name   特性   --   roo   描述符   引用   删除   命令   

TODO

 

https://blog.csdn.net/spch2008/article/details/51433353

 

 

 

#!/bin/bash
start_time=`date +%s`              #定义脚本运行的开始时间
[ -e /tmp/fd1 ] || mkfifo /tmp/fd1 #创建有名管道
exec 3<>/tmp/fd1                   #创建文件描述符,以可读(<)可写(>)的方式关联管道文件,这时候文件描述符3就有了有名管道文件的所有特性
rm -rf /tmp/fd1                    #关联后的文件描述符拥有管道文件的所有特性,所以这时候管道文件可以删除,我们留下文件描述符来用就可以了
for ((i=1;i<=10;i++))
do
        echo >&3                   #&3代表引用文件描述符3,这条命令代表往管道里面放入了一个"令牌"
done

for ((i=1;i<=1000;i++))
do
read -u3                           #代表从管道中读取一个令牌
{
        sleep 1                    #sleep 1用来模仿执行一条命令需要花费的时间(可以用真实命令来代替)
        echo success$i
        echo >&3                   #代表我这一次命令执行到最后,把令牌放回管道
}&
done
wait

stop_time=`date +%s`  #定义脚本运行的结束时间

echo "TIME:`expr $stop_time - $start_time`"
exec 3<&-                       #关闭文件描述符的读
exec 3>&-                       #关闭文件描述符的写




#!/bin/bash

token(){
    # 创建有名管道,如果fd1不存在则创建
    [ -e /tmp/fd1 ] || mkfifo /tmp/fd1
    # 创建文件描述符,以可读(<)可写(>)的方式关联管道文件,这时候文件描述符999就有了有名管道文件的所有特性
    exec 4<>/tmp/fd1
    # 关联后的文件描述符拥有管道文件的所有特性,所以这时候管道文件可以删除,我们留下文件描述符来用就可以了
    [ -e /tmp/fd1 ] && rm -f /tmp/fd1
    
    # 初始化并行数
    for ((i=1;i<=3;i++))
    do
        # &999代表引用文件描述符999,这条命令代表往管道里面放入了一个"令牌"
        echo >&4
    done
}

main(){
    pid=5
    # 生成管道文件
    token ${pid}

    # 循环获取服务包名
    for file_name in `ls /root/spark/dependency/*.jar`
    do
        echo ‘-------------------restart ‘ ${file_name} ‘-------------------------‘

        # 获取令牌
        read -u999 {
            # 根据文件名去掉版本后缀,获得服务名
            # svc_name=${file_name%0.0.1*}
            # 获取启动参数
            # get_para
            # 执行重启
            # one_restart
            # 这一次命令执行到最后,把令牌放回管道
            echo ${file_name}
            sleep 1
            echo >&${pid}
        } &
    done

    wait
    # 定义脚本运行的结束时间
    stop_time=`date +%s`
    echo "TIME:`expr $stop_time - $start_time`"
    # 关闭文件描述符的读
    exec ${pid}<&-
    # 关闭文件描述符的写
    exec ${pid}>&-
}

main

 

shell 并发

标签:get   name   特性   --   roo   描述符   引用   删除   命令   

原文地址:https://www.cnblogs.com/chenzechao/p/11251963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!