#!bash
# 2014-12-5
# --------------------
#  此例子说明了一种用wait、read命令模拟多线程的一种技巧
#  此技巧往往用于多主机检查,比如ssh登录、ping等等这种单进程比较慢而不耗费cpu的情况
# -------------------------
operation(){sleep $1
}tmp_fifofile=/tmp/$$.fifo
#echo $tmp_fifofilemkfifo $tmp_fifofile # 新建一个fifo的管道文件
exec 6<>$tmp_fifofile # 绑定fd6
rm $tmp_fifofile# 这里是向管道添加了$thread个空行
THREAD=3 # 线程数,可以改变
for i in $(seq 0 $THREAD);doecho
done >&6CONFIG_FILE=config.txt
# 修改这个脚本到生成环境,主要是修改operation和CONFIG_FILE配置
# 每次读取一行数据
while read line
do# 一个read -u6命令执行一次,就从fd6中减去一个回车符,然后向下执行,# fd6 中没有回车符的时候,就停在这了,从而实现了线程数量控制read -u6{# 操作成功,记录到成功日志,修改echo# 操作失败,记录到错误日志operation  $line && echo " $line success" || echo "$line error"# 当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个echo  >&6} & # 后台执行,这里的 &是非常重要的,同时有$THREAD个后台进程 done < ${CONFIG_FILE}wait # 等待所有的后台子进程结束
exec 6>&- # 关闭df6
exit 0# 脚本的结果,执行了7秒

Shell多线程实现相关推荐

  1. Shell多线程操作及线程数控制实例

    来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...

  2. [shell进阶]——shell多线程

    关于shell的多线程 1. 多线程并发执行任务,而不用一台台的串行执行,能更快更高效 2. Shell并没有多线程的概念,所以: * 一般使用wait.read等命令技巧性地模拟多线程实 * 使用命 ...

  3. shell 多线程脚本

    shell 多线程脚本实现 方法一: for 循环 加&,指定数量的所有进程在后台同时运行 脚本示例如下,同时运行50个进程: [root@node1 sh]# cat process.sh ...

  4. linux脚本多线程,Shell多线程操作及线程数控制实例

    前言 在业务开发过程中,经常会在后台写一些shell脚本处理数据,但估计很多人不知道shell脚本也可以支持多线程,而且非常简单.本篇文章主要就是介绍shell实现多进程以及进程数量控制. 需求 为了 ...

  5. linux shell 多线程执行程序

    Shell中并没有真正意义的多线程,要实现多线程可以启动多个后端进程,最大程度利用cpu性能. 直接看代码示例吧. (1) 顺序执行的代码 #!/bin/bash date for i in `seq ...

  6. linux下的shell多线程用法,shell多线程操作

    经常需要拷贝大量的数据到多个服务器,发现rsync对与某些格式的文件同步很快,但是对于一些格式的文件同步速度真的很慢,如果能使用阵列应该会提高很多.当然采用分布式也有很大的提升. 下面是脚本代码,请大 ...

  7. linux测试内网速度慢,shell多线程快速检测内网ip是否存活

    之前写了一篇shell检测内网ip是否存活,对内网ip检测实在是太慢了,最近闲得蛋疼,决定用多进程来解决. #!/bin/bash # By rocdk890 # https://blog.slogr ...

  8. shell多线程执行ping

    很多时候针对许多台主机的在线检测,我们经常会用for循环去ping,但是非常慢,因为是一台一台主机的去ping.如果是同时启动N个进程去ping所有主机,那是不是很快了呢?对,shell多线程处理. ...

  9. linux shell编程多线程和wait命令学习

    http://blog.csdn.net/shuanghujushi/article/details/38186303 最近在使用shell做一些部署工作,在使用过程中,效率一直不高.想提高效率,经过 ...

最新文章

  1. [转]Backup and restore history details
  2. 数据结构和算法基础概述
  3. [转]gtest使用
  4. GraphQL入门之工程搭建
  5. 按钮是什么意思_汽车里的Rear按键是什么意思?
  6. apache配置文件详解与优化
  7. Selenium 中文手册
  8. idea 切换git仓库_Idea切换git分支及合并
  9. C# 使用SFTP的上传下载文件时如何使用代理
  10. 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)
  11. 统计学习(一):数据的组织和表示
  12. WCF入门(七)——异常处理1
  13. ALOS_PALSAR_12.5m分辨率DEM数据下载
  14. 【网络编程】【SCTP】SCTP协议介绍,四次握手,三次挥手
  15. Mac版Illustrator CS6破解版
  16. wjh2005:GitHub 上有哪些完整的 iOS-App 源码值得参考?
  17. 2021年电子元器件行业涨价趋势已现
  18. response.buffer用法
  19. 加密和解密的应用_万金油_新浪博客
  20. 微信公众平台微信支付打通流程

热门文章

  1. 通向架构师的道路(第十二天)之Axis2 Web Service(三)
  2. 宜人贷蜂巢API网关技术解密之Netty使用实践
  3. EMQ源码之--EMQ的启动
  4. Exchannge 2013数据库副本频繁自动切换
  5. 如何取消IE窗口的全屏显示
  6. 我程序中用到的第一个递归算法
  7. 00018计算机应用2018年4月,全国2019年4月自考00018《计算机应用基础》试题及答案...
  8. c语言程序设计B试题,c语言程序设计期末试题B(含答案)Word版
  9. mysql残余文件的清理
  10. 下载Nacos源码并运行