Shell 实现多线程(多任务)

1.命令结尾添加:&

在命令的末尾加 & 符号,则命令将在后台执行,这样后面的命令不需要等待该命令执行完再开始执行。

2.解决主线程提前退出问题,添加 wait

3.控制后台执行数(线程数),mkfifo

#/bin/bash
all_num=10
设置并发的进程数
thread_num=5
a=$(date +%H%M%S)
mkfifo
tempfifo="my_temp_fifo"
mkfifo ${tempfifo}
使文件描述符为非阻塞式
exec 6<>${tempfifo}
rm -f ${tempfifo}
为文件描述符创建占位信息
for ((i=1;i))
do
{
    echo
}
done >&6
#
for num in seq 1 ${all_num}
do
{
    read -u6
    {
        sleep 1
        echo ${num}
        echo "" >&6
    } &
}
done
wait
关闭fd6管道
exec 6>&-
b=$(date +%H%M%S)
echo -e "startTime:\t$a"
echo -e "endTime:\t$b"

参考资料

[1] 情景linux–shell如何实现多线程?

[2] Linux-Shell-使用mkfifo实现多任务并发及并发数控制

Original: https://www.cnblogs.com/zhengbin/p/9513762.html
Author: 郑斌blog
Title: Shell 实现多线程(多任务)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529691/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Docker私有仓库搭建

    Docker私有仓库搭建 1、Docker Registry 网上有很多的 Registry服务器都支持第三方用户注册,而后基于用户名去做自己的仓库,但是使用互联网上的 Regis…

    Linux 2023年6月7日
    0140
  • 每天一个 HTTP 状态码 206

    206 Partial Content 是当客户端请求时使用了Range头部,服务器端回复… 206 Partial Content 206 Partial Conte…

    Linux 2023年6月7日
    0111
  • mycat数据库集群系列之数据库多实例安装

    mycat 数据库集群系列之数据库多实例安装 最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考。本次系列终结大…

    Linux 2023年6月14日
    090
  • Linux系统调用接口

    Linux系统调用接口 进程控制 系统调用 描述 fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 终止进程 _exit 立即终止…

    Linux 2023年6月13日
    095
  • RPA纳税申报机器人

    bash;gutter:true;1、机器人开始工作2、机器人打开企业内部税务平台,自动下载报税底表3、机器人自动登录地方税务局,填写报税数据手工报税10分钟/3个表 VS 机器人…

    Linux 2023年6月7日
    075
  • #NAME?

    java程序运行时内存设置 -Xms :设置默认内存大小 -Xmx:设置最大内存值 -Xsss 每个线程的堆栈大小,jdk5以后默认时1m,之前是256kb Original: h…

    Linux 2023年6月8日
    079
  • bare Git 仓库是什么?

    背景 今天,坐我旁边的同事问我一些关于服务器上命令的问题。其中有一个用了特殊参数的 git init 的命令,我也不认识,遂去 Google… bare Git 仓库 …

    Linux 2023年6月7日
    084
  • 音视频技术入门课 -01 如何从色彩格式、帧率等参数角度看视频图像?

    本文将从视频 / 图像的原始数据格式、视频逐行 / 隔行扫描、帧率、图像分辨率、色域等几方面入手,对视频基础知识做一个整体性的了解。 看视频时会看到很多图像,是由一个个像素点组成的…

    Linux 2023年6月7日
    0120
  • Redis的快照持久化-RDB与AOF

    Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。 数据保存到硬盘的过程就称为&#822…

    Linux 2023年5月28日
    092
  • Linux 0.11源码阅读笔记-内存管理

    内存管理 Linux内核使用段页式内存管理方式。 内存池 物理页:物理空闲内存被划分为固定大小(4k)的页 内存池:所有空闲的物理页面形成一个内存池,并逐页分配和回收。并通过位图记…

    Linux 2023年5月27日
    087
  • shell多线程运行程序

    #!/bin/bash function my_cmd(){ sleep 1 } date tmp_fifofile="/tmp/$$.fifo" mkfifo…

    Linux 2023年6月6日
    0105
  • Kafka 配置文件详情

    kafka的配置分为 broker、producter、consumer三个不同的配置 一 、BROKER 的全局配置 最为核心的三个配置 broker.id、log.dir、zo…

    Linux 2023年6月8日
    078
  • 关于面试的那些事

    这周做了三次的笔试,周日的XXX,周三的XXX,周五的XXX。 首先周日的XXX,考了四道算法题,两个小时,说实话题目都没怎么读懂,算法基本没接触过,结果一道也没有做出来,只想说,…

    Linux 2023年6月7日
    0109
  • 一、Java分布式(第一章)

    单机架构:将一个项目所有的业务部署在一个服务器上,整个项目的所有服务都由这台服务器提供。单机架构的劣势已经体现出来了,当访问量越来越大,单机架构肯定撑不住。例如双十一的活动,单机架…

    Linux 2023年6月7日
    095
  • redis

    常用操作 LLEN KEY_NAME # &#x8FD4;&#x56DE;&#x5217;&#x8868;&#x7684;&#x95…

    Linux 2023年5月28日
    097
  • nand

    nand flash裸机编程第001节_NAND_FLASH操作原理第002节_NandFlash时序及初始化第003节_NandFlash的芯片id读取第004节_NandFla…

    Linux 2023年6月13日
    068
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球