Shell多线程实现
#!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多线程实现相关推荐
- Shell多线程操作及线程数控制实例
来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...
- [shell进阶]——shell多线程
关于shell的多线程 1. 多线程并发执行任务,而不用一台台的串行执行,能更快更高效 2. Shell并没有多线程的概念,所以: * 一般使用wait.read等命令技巧性地模拟多线程实 * 使用命 ...
- shell 多线程脚本
shell 多线程脚本实现 方法一: for 循环 加&,指定数量的所有进程在后台同时运行 脚本示例如下,同时运行50个进程: [root@node1 sh]# cat process.sh ...
- linux脚本多线程,Shell多线程操作及线程数控制实例
前言 在业务开发过程中,经常会在后台写一些shell脚本处理数据,但估计很多人不知道shell脚本也可以支持多线程,而且非常简单.本篇文章主要就是介绍shell实现多进程以及进程数量控制. 需求 为了 ...
- linux shell 多线程执行程序
Shell中并没有真正意义的多线程,要实现多线程可以启动多个后端进程,最大程度利用cpu性能. 直接看代码示例吧. (1) 顺序执行的代码 #!/bin/bash date for i in `seq ...
- linux下的shell多线程用法,shell多线程操作
经常需要拷贝大量的数据到多个服务器,发现rsync对与某些格式的文件同步很快,但是对于一些格式的文件同步速度真的很慢,如果能使用阵列应该会提高很多.当然采用分布式也有很大的提升. 下面是脚本代码,请大 ...
- linux测试内网速度慢,shell多线程快速检测内网ip是否存活
之前写了一篇shell检测内网ip是否存活,对内网ip检测实在是太慢了,最近闲得蛋疼,决定用多进程来解决. #!/bin/bash # By rocdk890 # https://blog.slogr ...
- shell多线程执行ping
很多时候针对许多台主机的在线检测,我们经常会用for循环去ping,但是非常慢,因为是一台一台主机的去ping.如果是同时启动N个进程去ping所有主机,那是不是很快了呢?对,shell多线程处理. ...
- linux shell编程多线程和wait命令学习
http://blog.csdn.net/shuanghujushi/article/details/38186303 最近在使用shell做一些部署工作,在使用过程中,效率一直不高.想提高效率,经过 ...
最新文章
- [转]Backup and restore history details
- 数据结构和算法基础概述
- [转]gtest使用
- GraphQL入门之工程搭建
- 按钮是什么意思_汽车里的Rear按键是什么意思?
- apache配置文件详解与优化
- Selenium 中文手册
- idea 切换git仓库_Idea切换git分支及合并
- C# 使用SFTP的上传下载文件时如何使用代理
- 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)
- 统计学习(一):数据的组织和表示
- WCF入门(七)——异常处理1
- ALOS_PALSAR_12.5m分辨率DEM数据下载
- 【网络编程】【SCTP】SCTP协议介绍,四次握手,三次挥手
- Mac版Illustrator CS6破解版
- wjh2005:GitHub 上有哪些完整的 iOS-App 源码值得参考?
- 2021年电子元器件行业涨价趋势已现
- response.buffer用法
- 加密和解密的应用_万金油_新浪博客
- 微信公众平台微信支付打通流程