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

顺序执行
执行3次没次等待4秒,共计耗时12秒
代码:
#/bin/bash
date
for num in seq 1 3
do
{
echo “sleep 4”
sleep 4
}
done
date
结果:
2019年 11月 20日 星期三 09:40:56 CST
sleep 4
sleep 4
sleep 4
2019年 11月 20日 星期三 09:41:08 CST

使用 &+wait
并行执行,共计耗时4秒
代码:
#/bin/bash
date
for num in seq 1 3
do
{
echo “sleep 4”
sleep 4
}&
done
wait
date
结果:
2019年 11月 20日 星期三 09:42:44 CST
sleep 4
sleep 4
sleep 4
2019年 11月 20日 星期三 09:42:48 CST
根据观察可以发现&+wait形式会让循环体内的命令全部进入后台运行,这样当处理大量事务时会有问题,所以可以根据以下几种方式实现控制每次开启的线程数量

多层for 循环
共计9次,发3个线程,等待4秒,共计耗时12秒
代码:
#/bin/bash
date
for num2 in seq 1 3
do
{
for num in seq 1 3
do
{
echo “sleep 4”
sleep 4
}&
done
wait
}
done
date
结果:
2019年 11月 20日 星期三 09:47:23 CST
sleep 4
sleep 4
sleep 4
sleep 4
sleep 4
sleep 4
sleep 4
sleep 4
sleep 4
2019年 11月 20日 星期三 09:47:35 CST

使用xargs -P 并发
共计9次,发3个线程,等待4秒,共计耗时12秒
代码:
#/bin/bash
all_num=9
thread_num=3

date

seq 1 ${all_num} | xargs -n 1 -I {} -P ${thread_num} sh -c “sleep 4;echo {}”

date
结果:
2019年 11月 20日 星期三 09:51:03 CST
1
3
2
4
5
6
8
9
7
2019年 11月 20日 星期三 09:51:15 CST

以上就是我总结的shell 并行方式。还有使用GNU parallel命令实现并发的方式,因为测试环境没有改命令,故没做测试,待测试环境有之后会补全。

shell脚本多线程实现相关推荐

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

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

  2. shell脚本多线程

    function thread_func() {# 调用哪个函数执行多线程executed_func=$1[[ -z ${executed_func} ]] && error_exit ...

  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. 使用axios post 提交数据,后台获取不到提交的数据解决方案
  2. Java中Properties类的操作
  3. SICStus Prolog 3.10.0正式版下载
  4. Confluence 6 在升级之前
  5. 1470: 区间求最值(RMQ问题,ST算法模板)
  6. 从Ecipse中导出程序至apk
  7. iOS-MVVM架构优化
  8. kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!
  9. 如何在Clion中使用C++调用Python代码
  10. 手机能上wifi电脑不行_锦囊在此(电脑手机如何配置使用WIFI)
  11. ES6新特性_ES6函数参数的默认值设置---JavaScript_ECMAScript_ES6-ES11新特性工作笔记011
  12. OTT 端性能优化建设之 Weex 实践之路
  13. 安装Python模块:pygame
  14. 1*1的卷积核的作用
  15. php5.3 本地调试,php5.3 xdebug 调试器安装配置
  16. 我对未来技术趋势的一些看法
  17. lbp2900打印机linux驱动下载,佳能LBP2900+打印机驱动
  18. undefined symbol 问题解决记录
  19. HDS VSP G系列存储管理平台MPC安装
  20. 【数据结构与算法】之深入解析“扫雷游戏”的求解思路与算法示例

热门文章

  1. HBase(1.4.13)安装和使用
  2. linux 使用cups配置网络打印机
  3. 概率图模型-可分解图-连接树算法-弦图-图论
  4. c语言怎么实现电梯控制系统设计,基于单片机的电梯控制系统设计.doc
  5. jsp调用其他jsp中的js代码
  6. u8系统怎么连接服务器,怎么U8客户端连接服务器
  7. stm32f411re-OLED屏幕
  8. 桌面计算机图标怎么调出来,电脑桌面图标隐藏了怎么弄出来
  9. arcgis python脚本修改属性表_Arcgis属性表修改
  10. knn(k近邻算法)——matlab