shell脚本并发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本并发相关的知识,希望对你有一定的参考价值。
#!/bin/bash # Filename: bingfa.sh # Time: 2016/03/9 18:59:05 ip=`cat /tmp/iplist` # 过滤服务器IP dir=‘/tmp‘ # 目标路径 thead_num=10 # 自定义并发数,根据自身服务器性能或应用调整大小,开始千万别定义太大,避免管理机宕机 tmp_fifo_file="/tmp/$$.fifo" # 以进程ID号命名管道文件 mkfifo $tmp_fifo_file # 创建临时管道文件 exec 4<>$tmp_fifo_file # 以读写方式打开tmp_fifo_file管道文件,文件描述符为4,也可以取3-9任意描述符 rm -f $tmp_fifo_file # 删除临时管道文件,也可不删除 for ((i=0;i<$thead_num;i++)); do # 利用for循环向管道中输入并发数量的空行 echo "" # 输出空行 done >&4 # 输出重导向到定义的文件描述符4上 # 真正的要执行的所有命令在下面的大括号中 for i in $ip; do # 循环所有要执行的服务器 read -u4 # 从管道中读取行,每次一行,所有行读取完毕后执行挂起,直到管道有空闲的行 { # 大括号里面就是所有要执行的命令 echo $i # 显示主机ip scp $1 $i:$dir # scp是一个简单实例,执行脚本时$1传入一个变量值,可替换任意其他命令及命令组 ssh $i -n ‘date‘ # 打印时间 sleep 3 # 暂停3秒,给系统缓冲时间,达到限制并发进程数量 echo "" >&4 # 再写入一个空行,使挂起的循环继续执行 }& # 放入后台执行 done wait # 等待所有后台进程执行完成 exec 4>&- # 删除文件描述符 exit 0
sh bingfa.sh /tmp/test.txt # 执行脚本
本文出自 “行 者--->” 博客,请务必保留此出处http://liumissyou.blog.51cto.com/4828343/1749253
以上是关于shell脚本并发的主要内容,如果未能解决你的问题,请参考以下文章