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)

大家都在看

  • VRRP配置即实验

    VRRP 概念: VRRP 全称是虚拟路由器冗余协议,它是一种容错协议。该协议通过把几台路由设备联合组成一台虚拟的路由设备,该虚拟路由器在本地局域网拥有唯一的一个虚拟ID和虚拟IP…

    Linux 2023年6月6日
    085
  • docker 安装redis

    1: 搜索镜像, docker search redis2:&#xA0;<strong>docker pull redis:6.0.6</strong&g…

    Linux 2023年5月28日
    099
  • Linux 系统安全加固经验总结

    本文为博主原创,转载请注明出处: 1. 禁止root密码登录 修改 /etc/ssh/sshd_config 中 允许root 用户登录 PermitRootLogin 的值改为 …

    Linux 2023年6月14日
    0101
  • supervisord 进程管理利器

    Supervisor概述 ​ supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序。superv…

    Linux 2023年5月27日
    0104
  • 多用户共享文件

    假设有三个用户:Tom Jerry Bob.其中,tom和Jerry都属于market部,Bob属于tech部,请在/usr目录下创建两个用户共享的目录market和public,…

    Linux 2023年6月13日
    0103
  • ceph存储集群搭建以及介绍

    转载至https://blog.csdn.net/weixin_44989941/article/details/123370410 Original: https://www.c…

    Linux 2023年6月14日
    095
  • 计算机网络通信

    早期:联机 以太网:局域网与交换机 广播 主机之间”一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息…

    Linux 2023年6月14日
    099
  • Docker centos7,宝塔

    拉取一个centos镜像 docker pull centos:centos7 运行一个容器 docker run -i -t -d –restart=always –name…

    Linux 2023年6月6日
    099
  • 如何在EMACS 设置格式

    如何设置Emacs的各种模式, 这个教程要观摩一下的 http://www.emacswiki.org/emacs/IndentingC#toc1 Original: https:…

    Linux 2023年6月14日
    0110
  • gitlab

    版本控制gitlab 1. 版本控制介绍 2. gitlab部署 版本控制介绍 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思…

    Linux 2023年6月7日
    0135
  • Linux动静分离与Rewrite

    一、动静分离 1.1 单台机器动静分离 1、创建NFS挂载点(NFS服务端) mkdir /static vim /etc/exports /static 172.16.1.0/2…

    Linux 2023年5月27日
    0107
  • 统计算法_数值/线性关系度量

    继续统计算法,这次也没什么特别的,还没到那么深入,也是比较基础的1、方差-样本2、协方差(标准差)-样本3、变异系数4、相关系数 依然是先造个list,这次把这个功能写个函数,方便…

    Linux 2023年6月6日
    0157
  • Java刷题笔记—–>集合类

    一般提到某某集合区别,感觉必有线程安全Arrylist线程不安全,Vector反之 几个方面:线程是否安全,效率问题,对Null Key和Null value的支持,初始容量大小和…

    Linux 2023年6月7日
    0104
  • Linux 下 SVN 的安装和配置

    SVN 是一个自由开源的版本管理系统,它可以按照时间的顺序去管理文件、目录以及对其进行的修改。于今,它被广泛的用于互联网公司的项目版本管理中 工作原理 它的工作原理如下图所示 它是…

    Linux 2023年6月13日
    0103
  • SHELL编程-牛客网题目(持续更新..)

    SHELL编程题目及solution (牛客网) 描述:写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数示例:假设 nowcoder.txt 内容如下: #…

    Linux 2023年6月7日
    097
  • 制作pip离线源

    一、下载指定的包到相应的文件夹 (1)、创建存放安装包的目录:(联网环境) bash;gutter:true; pip list #查看安装的包 mkdir packs pip i…

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