例子

  1. #!/bin/bash
  2. temp_fifo_file=$$.info #以当前进程号,为临时管道取名
  3. mkfifo $temp_fifo_file #创建临时管道
  4. exec <>$temp_fifo_file #创建标识为6,可以对管道进行读写
  5. rm $temp_fifo_file #清空管道内容
  6. function f_sleep
  7. {
  8. sleep
  9. }
  10.  
  11. temp_thread= #进程数
  12.  
  13. for ((i=;i<temp_thread;i++)) #为进程创建相应的占位
  14. do
  15. echo #每个echo输出一个回车,为每个进程创建一个占位
  16. done >& #将占位信息写入标识为6的管道
  17.  
  18. for ((i=;i<;i++))
  19. do
  20. read #获取标识为6的占位
  21. {
  22. f_sleep
  23. echo $$,$i,`date`
  24. sleep
  25. echo $$,$i,`date`
  26. echo >& #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
  27. }& #>>>>>在后台执行{}中的任务
  28. done <& #将标识为6的管道作为标准输入
  29.  
  30. wait #等待所有任务完成
  31. exec >&- #关闭标识为6的管道

例子

  1. #!/bin/bash
  2. temp_fifo_file=$$.info #以当前进程号,为临时管道取名
  3. mkfifo $temp_fifo_file #创建临时管道
  4. exec <>$temp_fifo_file #创建标识为6,可以对管道进行读写
  5. rm $temp_fifo_file #清空管道内容
  6. function f_sleep
  7. {
  8. sleep
  9. }
  10.  
  11. temp_thread= #进程数
  12.  
  13. for ((i=;i<temp_thread;i++)) #为进程创建相应的占位
  14. do
  15. echo #每个echo输出一个回车,为每个进程创建一个占位
  16. done >& #将占位信息写入标识为6的管道
  17.  
  18. for ((i=;i<;i++))
  19. do
  20. read #获取标识为6的占位
  21. {
  22. f_sleep
  23. echo $$,$i,`date`
  24. }& #>>>>>在后台执行{}中的任务
  25. sleep
  26. echo $$,$i,`date`
  27. echo >& #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
  28. done <& #将标识为6的管道作为标准输入
  29.  
  30. wait #等待所有任务完成
  31. exec >&- #关闭标识为6的管道

例子

  1. #!/bin/bash
  2. temp_fifo_file=$$.info #以当前进程号,为临时管道取名
  3. mkfifo $temp_fifo_file #创建临时管道
  4. exec <>$temp_fifo_file #创建标识为6,可以对管道进行读写
  5. rm $temp_fifo_file #清空管道内容
  6. function f_sleep
  7. {
  8. sleep
  9. echo >& #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
  10. }
  11.  
  12. temp_thread= #进程数
  13.  
  14. for ((i=;i<temp_thread;i++)) #为进程创建相应的占位
  15. do
  16. echo #每个echo输出一个回车,为每个进程创建一个占位
  17. done >& #将占位信息写入标识为6的管道
  18.  
  19. for ((i=;i<;i++))
  20. do
  21. read #获取标识为6的占位
  22. {
  23. f_sleep
  24. echo $$,$i,`date`
  25. }& #>>>>>在后台执行{}中的任务
  26. sleep
  27. echo $$,$i,`date`
  28. done <& #将标识为6的管道作为标准输入
  29.  
  30. wait #等待所有任务完成
  31. exec >&- #关闭标识为6的管道

例子

  1. #!/bin/bash
  2. temp_fifo_file=$$.info #以当前进程号,为临时管道取名
  3. mkfifo $temp_fifo_file #创建临时管道
  4. exec <>$temp_fifo_file #创建标识为6,可以对管道进行读写
  5. rm $temp_fifo_file #清空管道内容
  6. function f_sleep
  7. {
  8. sleep
  9. echo >& #>>>>>当任务执行完后,会释放管道占位,所以补充一个占位
  10. }
  11.  
  12. temp_thread= #进程数
  13.  
  14. for ((i=;i<temp_thread;i++)) #为进程创建相应的占位
  15. do
  16. echo #每个echo输出一个回车,为每个进程创建一个占位
  17. done >& #将占位信息写入标识为6的管道
  18.  
  19. for ((i=;i<;i++))
  20. do
  21. read #获取标识为6的占位
  22. {
  23. f_sleep
  24. echo $$,$i,`date`
  25. sleep
  26. echo $$,$i,`date`
  27. }& #>>>>>在后台执行{}中的任务
  28. done <& #将标识为6的管道作为标准输入
  29.  
  30. wait #等待所有任务完成
  31. exec >&- #关闭标识为6的管道

shell 的多进程的更多相关文章

  1. shell脚本多进程

    shell脚本再执行过程中就一个进程,从头到尾 下面配置shell脚本执行过程中启动多个进程同时执行 #!/bin/bash for ((i=1;i<=10;i++)) do ( echo &q ...

  2. shell 并发多进程同时执行

    #!/bin/bash SEND_THREAD_NUM= #设置进程数. tmp_fifofile="/tmp/$$.fifo" # 脚本运行的当前进程ID号作为文件名 mkfif ...

  3. SHELL网络爬虫实例剖析--转载

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://nolinux.blog.51cto.com/4824967/1552472 前天 ...

  4. Linux编程 9 (shell类型,shell父子关系,子shell用法)

    一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

  5. Linux多进程之间的文件锁

    之前对于文件的操作通常在一个进程中完成,最近需要在两个进程中对同一个文件进行操作.故想到了文件锁. Linux下可以使用flock()函数对文件进行加锁解锁等操作.简单介绍下flock()函数: 表头 ...

  6. [shell] Bash编程总结

    由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...

  7. shell实践

    shell实践 父子shell 父shell:我们在登录某个虚拟机控制器终端的时候(连接某一个linux虚拟机)时,默认启动的交互式shell,然后等待命令输入. ps命令参数,是否有横杠的参数作用是 ...

  8. Linux Shell多进程并发以及并发数控制

    1. 基础知识准备 1.1. linux后台进程 Unix是一个多任务系统,允许多用户同时运行多个程序.shell的元字符&提供了在后台运行不需要键盘输入的程序的方法.输入命令后,其后紧跟&a ...

  9. shell多进程

    之前需要多进程程序都是python实现,闲来无事弄了下shell多进程,发现so easy(笑哭) 代码上: #!/bin/bash sleep 10 & sleep 5& wait ...

随机推荐

  1. Ipython使用指南

    一.简介 2001年,Fernando Perez为了得到一个更为高效的交互式Python解释器而启动的一个项目,IPython不仅仅是一个加强版的shell,他可以直接进行绘图操作的GUI控制台,一 ...

  2. iOS与H5交互(WKWbebView)

    前言: 在iOS开发中,或多或少的会嵌入一些H5页面,有时候需要原生代码和H5页面进行交互.iOS8开始苹果推出性能更强大的WKWebView,所以一下方法是关于WKWebView与JS的交互. 创建 ...

  3. win 下 python ImportError: No module named requests

    第一次弄爬虫,报库找不到,网上找了半天,一般都让都让改成绝对路径...那不是饮鸩止渴嘛. 然后 在无意中发现,不需要控制台输入pip命令,因为不是在Linux下啊,,win下直接在pycharm里添加 ...

  4. mariadb安装

    1.配置yum源 基本源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ...

  5. 实现一个自定义的ArrayList类,实现将原List中的每个数据都乘以10

    1.首先自定义一个Operate接口,如下所示: public interface Operate { public Integer caozuo(Integer i); } 2.实现自定义的Arra ...

  6. 极致21点开发DAY4

    完成的内容:1.修改上一篇博文中的Bug  2.完成任务窗口逻辑 using System; using System.Collections.Generic; using UnityEngine; ...

  7. 【数据结构】算法 LinkList (Reverse LinkedList) Java

    反转链表,该链表为单链表. head 节点指向的是头节点. 最简单的方法,就是建一个新链表,将原来链表的节点一个个找到,并且使用头插法插入新链表.时间复杂度也就是O(n),空间复杂度就需要定义2个节点 ...

  8. maven clean或package报错

    [ERROR] Failed to execute goal on project jeesns-service: Could not resolve dependencies for project ...

  9. Scala环境搭建及Intellij IDEA安装

    1.JDK官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Scala ...

  10. JavaFX-Application

    JavaFX—Application 1.Application是JavaFX程序的入口,任何javafx应用程序程序都要继承该类并重写start()方法 public class TsetStage ...