function thread_func() {# 调用哪个函数执行多线程executed_func=$1[[ -z ${executed_func} ]] && error_exit "调用的函数为空"# 传入进来要循环的文件list_file=${2}[[ ! -s ${list_file} ]] && error_exit "列表文件为空或者文件不存在: ${list_file}"# 设置并发的线程数,根据本服务器的CPU核数是最合适的CPU_count=$(cat /proc/cpuinfo| grep "processor" | wc -l)let thread=${CPU_count}*2-2  # 减2是因为给服务器留点余地[[ ${thread} -lt 2 ]] && thread=2[[ ${thread} -gt 15 ]] && thread=15 # # 根据自己的情况设置峰值tempfifo="my_temp_fifo"mkfifo ${tempfifo}      # 创建文件描述符文件# 使文件描述符为非阻塞式exec 6<>${tempfifo}   # 创建文件描述符,以可读(<)可写(>)的方式关联管道文件,这时候文件描述符3就有了有名管道文件的所有特性rm -f ${tempfifo}     # 关联后的文件描述符拥有管道文件的所有特性,所以这时候管道文件可以删除,我们留下文件述符来用就可以了# 为文件描述符创建占位信息for ((Multithreading=1;Multithreading<=${thread};Multithreading++))do {echo -ne "\n" 1>&6}done >&6# 读取参数列表文件exec 5<${list_file}while read LINE <&5do{read -u6  # 代表从管道中读取一个令牌{   ${executed_func} "${LINE}"echo -ne "\n" 1>&6  # 代表执行到最后,读取下一个管道中一个令牌} &}donewait   # 等待所有任务执行完退出线程任务# 关闭fd6管道exec 6>&-  #关闭文件描述符的写exec 6<&-  #关闭文件描述符的读
}function ls_server() {IP=$1${SSH} 22 ${IP} 'ls /root/'[[ $? -ne 0 ]] && echo "服务器(${IP})ls失败" > logs/error.log && return 1
}function rm_server() {IP=$1${SSH} 22 ${IP} 'rm /root/test.txt'[[ $? -ne 0 ]] && echo "服务器(${IP})rm失败" > logs/error.log && return 1
}thread_func ls_server tmp/ip_list.txt
grep '失败' logs/error.log
[[ $? -eq 0 ]] && exit 1thread_func rm_server tmp/ip_list.txt
grep '失败' logs/error.log
[[ $? -eq 0 ]] && exit 1

shell脚本多线程相关推荐

  1. shell脚本多线程实现

    shell脚本多线程实现 在使用shell 脚本时,碰到了顺序执行太慢的情况,因此考虑使用多线程方式,以提高效率. 具体做法是使用 &+wait 达到多线程的效果,下面请看对比. 顺序执行 执 ...

  2. caj文档批量转换为pdf(shell脚本多线程)

    摘要 最近看的论文有些多,但知网上的 caj 文档又卡又难做笔记,遂写了一个 caj 文档批量转换为 pdf 的 shell 脚本. caj2pdf 安装 caj2pdf 命令行工具 github 源 ...

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

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

  4. 用php写shell,php与shell实现多线程的简单例子

    php本身不支持多线程,但apache和linux是支持的,有了lamp与lnmp这样的绝佳组合,再有了shell的鼎力相助,在php中实现多线程就不再那么困难了. 有如下的php代码,每次循环sle ...

  5. Linux命令行与Shell脚本编程大全读书笔记

    Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab   管理系统开机时会自动启动的进程 2./etc/init. ...

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

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

  7. linux 定时执行搅拌,Linux上定时shell脚本

    本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件 sql文件 -- 创建表 create table if not exists iot_test.iot_ta ...

  8. shell脚本和常用命令

    什么是脚本? 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看.编辑). 常见的脚本: JavaScript(JS,前端),VBScript, AS ...

  9. Shell脚本中的并发(转)

    转自http://blog.csdn.net/wangtaoking1/article/details/9838571 主要记录一下Shell脚本中的命令的并发和串行执行. 默认的情况下,Shell脚 ...

最新文章

  1. 在Linux 下配置PHP 支援GD
  2. 来自学长同学分享的学习方法
  3. 深度学习准备「爆破」著名的欧拉方程
  4. 韵乐x5效果器ktv最佳参数_家庭ktv(卡拉ok)家庭影院ktv选购推荐攻略
  5. Oracle 19c 新特性:自动化索引 Automatic indexing 实践
  6. 练习:查找指定目录(包括子目录)下的视频(格式为.mp4,.rmvb,.avi),并将目录存放在一个文件中...
  7. matlab温室,科学网—用MATLAB建立中国部门温室气体排放的关联模型 - 计军平的博文...
  8. mybatis一对多和多对一
  9. 千万青年学子,双击电子版微积分
  10. 了解新型计算机ppt,第1章计算机系统基础ppt课件.ppt
  11. SC 防火墙防DOS工具机制
  12. VOIP技术的专业性网站
  13. Stm32中英文手册官网免费
  14. 狂妄之人音乐计算机乐谱,天谕手游狂妄之人乐谱_狂妄之人乐谱代码分享_3DM手游...
  15. 非常实用的12条 SQL 优化方案
  16. 高数巨占座问题(c语言)
  17. Spring boot 子模块不同包名下controller接口404问题解决方案
  18. 大连究竟有多少“软件园”
  19. 以下哪款工具不能编译c语言,哪款C语言编译器(IDE)适合初学者?
  20. 返回时上一界面仍保持之前的内容

热门文章

  1. 视频平台就是最大的骗局。 下贱,恶心脏
  2. Unreal4下载安装教程
  3. zotero文献管理器安装
  4. 如何分析公众号后台数据?
  5. iOS马甲包过审经验4.3和2.1
  6. java语言(3):通俗易懂的泛型
  7. 妙用Spring的事务超时时间timeout
  8. 跟寻智能色选机,一起探索神秘的色彩世界
  9. Python程序员好像就没有遇到过听不了的歌~
  10. Excel2016设置下拉选项并自动匹配单元格颜色