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)

大家都在看

  • SharePoint 2010开发工具图解系列:PowerShell脚本

    练习 :使用PowerShell脚本 在此次练习中,您将了解到如何使用PowerShell和专为SharePoint 2010构建的PowerShell加载项。 从Windows …

    Linux 2023年5月28日
    0100
  • [20220303]oracle如何定位使用library cache mutex 3.txt

    [20220303]oracle如何定位使用library cache mutex 3.txt –//这个问题实际上困扰我很久,我开始以为library cache b…

    Linux 2023年6月13日
    080
  • Linux磁盘管理

    一、磁盘管理 Linux 磁盘管理好坏直接关系到整个系统的性能问题。 Linux 磁盘管理常用的三个命令为 df、 du 和 fdisk。 df(英文全称:disk full):列…

    Linux 2023年5月27日
    0100
  • Java多线程volatile、ThreadLocal、线程池、atomic

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月11日
    095
  • shell大全定时清空文件内容,定时记录文件大小

    shell大全定时清空文件内容,定时记录文件大小 bash;gutter:true;</p> <h1>!/bin/bash</h1> <h…

    Linux 2023年5月28日
    0128
  • MIT6.828——Lab2(麻省理工操作系统实验)

    Lab2 Lab2 是关于操作系统存储管理的细节。主要是建立内存模型,页表,物理地址映射等。在Lab2之前,请复习好前序知识: Lab2内存管理准备知识 MIT6.828——Lab…

    Linux 2023年5月27日
    0110
  • 全新UI西游H5决战天宫游戏详细图文架设教程

    前言 想体验经典Q版西游霸服快乐吗?想体验满级VIP的尊贵吗?想体验一招秒杀的爽快吗?各种极品炫酷时装、坐骑、翅膀、宠物通通给你,就在全新UI西游H5决战天宫! 本文讲解决战天宫架…

    Linux 2023年6月7日
    0105
  • MySQL — 数据查询语言

    DQL 全称 Data Query Language。数据查询语言,用来查询数据库中表的记录。 语法: select 查询列表(字段、常量、函数、表达式) from 表名; 字段别…

    Linux 2023年6月8日
    095
  • zabbix 报表动作日志 报错”503“

    本文来自博客园,作者:xiao智,转载请注明原文链接:https://www.cnblogs.com/yuwen01/p/16216868.html Original: https…

    Linux 2023年6月13日
    0107
  • Shell添加任务计划

    添加任务计划,每30分钟自动执行 /data1/scripts/chk_sds.sh mkdir /data1/scripts echo -e "if [ \ps -C …

    Linux 2023年5月28日
    083
  • Debian修改固定IP

    注意:此配置文件更改权限应为root权限方可修改成功 1.设置固定IP地址、网关 命令: cp /etc/network/interfaces /etc/network/inter…

    Linux 2023年6月13日
    081
  • 为spring cloud config实现刷新动态掉的坑

    正常搭建配置中心,网上教程多,这里不讨论,只记坑也是为了后来者少花时间在这里,由于是当时研究了好久才写的文章,所以只能提供问题的原因,当然会给出印证的思路,闲话不多说进入正题! 版…

    Linux 2023年6月7日
    0100
  • 剑指offer计划23( 数学简单)—java

    1.1、题目1 剑指 Offer 39. 数组中出现次数超过一半的数字 1.2、解法 万能哈希表,数学方法看到我要吐血。。。 1.3、代码 class Solution { pub…

    Linux 2023年6月11日
    0105
  • make

    make 背景 gcc 在编译一个包含多个源文件的工程时, gcc需要将每一个源文件都编译一遍,任何再链接起来形成一个可执行文件。实际上,用户很少对所有源文件都进行修改,这就会造成…

    Linux 2023年6月7日
    0104
  • sql注入

    一.原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有…

    Linux 2023年6月6日
    094
  • centos 更换yum 源

    1.如果系统有wget : 备份yum repo cd /etc/yum.repos.d for i in $(ls);do mv ${i}{,.bak};done for i i…

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