• shell 多进程


    linux shell 多个命令一起执行的几种方法
    所谓的多进程 只不过是将多个任务放到后台执行而已,所以现在讲的主要是控制。


    1.每个命令之间用分号; 隔开
    说明:各命令的执行结果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

    #!/bin/bash
    start=`date "+%s"`
    
    for((i=1;i<4;i++))
    do
        echo " `date "+%s" ` ";sleep 2
    done
    
    end=`date "+%s"`
    
    echo "time: `expr $end - $start `"  

     
    执行脚本:
    74
        76
        78
        80
        82
    84
    time:8
    这种不占处理器却有很耗时的进程,我们可以通过一种后台运行的方式来达到节约时间的目的。看如下改进:

    #!/bin/bash
    start=`date "+%s"`
    
    for((i=1;i<4;i++))
    do
        {
        echo " `date "+%s" ` ";sleep 2
        }&
    done
    
    wait
    
    end=`date "+%s"`
    
    echo "time: `expr $end - $start `"    


    执行脚本:
    81
        81
        81
        81
        81
    83
    time:2
    用“{}”将主执行程序变为一个块,用&放入后台,四次执行全部放入后台后,我们需要用一个wait指令,等待所有后台进程执行结束,不然 系统是不会等待的,直接继续执行后续指令,知道整个程序结束。

    优缺点:虽然达到了多线程并发的目的,但有一个缺陷,不能控制运行在后台的进程数。

     
    2.每个命令之间用&&隔开
    说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。



    3.每个命令之间用||或者|隔开
    说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

  • 相关阅读:
    [视频监控]用状态机图展示Layout切换关系
    初次打开mysql5.6后
    eclipse 项目乱码
    java servlet 中遇到的编码问题
    解决HttpServletResponse输出的中文乱码问题
    The first day of my Blog
    最大子段和
    LOI 54 成立一周年纪(zuo)念(si)
    水题 逆序对 NOIP 2013 火柴排队
    搜索 由浅入深 之一 水题
  • 原文地址:https://www.cnblogs.com/sunziying/p/8359158.html
Copyright © 2020-2023  润新知