shell脚本多线程
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脚本多线程相关推荐
- shell脚本多线程实现
shell脚本多线程实现 在使用shell 脚本时,碰到了顺序执行太慢的情况,因此考虑使用多线程方式,以提高效率. 具体做法是使用 &+wait 达到多线程的效果,下面请看对比. 顺序执行 执 ...
- caj文档批量转换为pdf(shell脚本多线程)
摘要 最近看的论文有些多,但知网上的 caj 文档又卡又难做笔记,遂写了一个 caj 文档批量转换为 pdf 的 shell 脚本. caj2pdf 安装 caj2pdf 命令行工具 github 源 ...
- linux脚本多线程,Shell多线程操作及线程数控制实例
前言 在业务开发过程中,经常会在后台写一些shell脚本处理数据,但估计很多人不知道shell脚本也可以支持多线程,而且非常简单.本篇文章主要就是介绍shell实现多进程以及进程数量控制. 需求 为了 ...
- 用php写shell,php与shell实现多线程的简单例子
php本身不支持多线程,但apache和linux是支持的,有了lamp与lnmp这样的绝佳组合,再有了shell的鼎力相助,在php中实现多线程就不再那么困难了. 有如下的php代码,每次循环sle ...
- Linux命令行与Shell脚本编程大全读书笔记
Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab 管理系统开机时会自动启动的进程 2./etc/init. ...
- linux shell编程多线程和wait命令学习
http://blog.csdn.net/shuanghujushi/article/details/38186303 最近在使用shell做一些部署工作,在使用过程中,效率一直不高.想提高效率,经过 ...
- linux 定时执行搅拌,Linux上定时shell脚本
本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件 sql文件 -- 创建表 create table if not exists iot_test.iot_ta ...
- shell脚本和常用命令
什么是脚本? 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看.编辑). 常见的脚本: JavaScript(JS,前端),VBScript, AS ...
- Shell脚本中的并发(转)
转自http://blog.csdn.net/wangtaoking1/article/details/9838571 主要记录一下Shell脚本中的命令的并发和串行执行. 默认的情况下,Shell脚 ...
最新文章
- 在Linux 下配置PHP 支援GD
- 来自学长同学分享的学习方法
- 深度学习准备「爆破」著名的欧拉方程
- 韵乐x5效果器ktv最佳参数_家庭ktv(卡拉ok)家庭影院ktv选购推荐攻略
- Oracle 19c 新特性:自动化索引 Automatic indexing 实践
- 练习:查找指定目录(包括子目录)下的视频(格式为.mp4,.rmvb,.avi),并将目录存放在一个文件中...
- matlab温室,科学网—用MATLAB建立中国部门温室气体排放的关联模型 - 计军平的博文...
- mybatis一对多和多对一
- 千万青年学子,双击电子版微积分
- 了解新型计算机ppt,第1章计算机系统基础ppt课件.ppt
- SC 防火墙防DOS工具机制
- VOIP技术的专业性网站
- Stm32中英文手册官网免费
- 狂妄之人音乐计算机乐谱,天谕手游狂妄之人乐谱_狂妄之人乐谱代码分享_3DM手游...
- 非常实用的12条 SQL 优化方案
- 高数巨占座问题(c语言)
- Spring boot 子模块不同包名下controller接口404问题解决方案
- 大连究竟有多少“软件园”
- 以下哪款工具不能编译c语言,哪款C语言编译器(IDE)适合初学者?
- 返回时上一界面仍保持之前的内容