• shell-异步执行


    一、启动后台子任务

            在执行命令后加&操作符,表示将命令放在子shell中异步执行。可以达到多线程效果。如下,

    1. sleep 10 #等待10秒,再继续下一操作  
    2. sleep 10 & #当前shell不等待,后台子shell等待  

    二、wait命令介绍

            wait  [作业指示或进程号]

            1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。如果没有制定参数,则等待所有子进程的退出,其退出状态为0.

            2.如果是shell中等待使用wait,则不会等待调用函数中子任务。在函数中使用wait,则只等待函数中启动的后台子任务。

            3.在shell中使用wait命令,相当于高级语言里的多线程同步。

    三、例子

    1.使用wait等待所有子任务结束。


     
    1. #!/bin/bash  
    2. sleep 10 &  
    3. sleep 5&  
    4. wait #等待10秒后,退出  
    1. #!/bin/bash  
    2. sleep 10 &  
    3. sleep 5&  
    4. wait $! #$!表示上个子进程的进程号,wait等待一个子进程,等待5秒后,退出  

    2.在函数中使用wait


     
    1. #!/bin/bash  
    2. source ~/.bashrc  
    3.   
    4. fun(){  
    5.     echo "fun is begin.timeNum:$timeNum"  
    6.     local timeNum=$1  
    7.     sleep $timeNum &  
    8.     wait #这个只等待wait前面sleep  
    9.       
    10.     echo "fun is end.timeNum:$timeNum"  
    11. }  
    12.   
    13. fun 10 &  
    14. fun 20 &  
    15.   
    16. wait #如果fun里面没有wait,则整个脚本立刻退出,不会等待fun里面的sleep  
    17. echo "all is ending"  

    输出结果为:


     
    1. fun is begin.timeNum:10  
    2. fun is begin.timeNum:20  
    3. fun is end.timeNum:10  
    4. fun is end.timeNum:20  
    5. all is ending  


    从输出结果,可以看到,整个脚本,等待了所有子任务的退出

  • 相关阅读:
    js语言基础练习(二)---------------函数的基础知识
    js语言基础练习
    js基本语法总结(一)
    HTML基础知识总结
    参考资料
    css基础知识的复习总结(三)
    css基础知识的复习总结(二)
    css基础知识的复习总结
    旋转数组
    CSS 之 position
  • 原文地址:https://www.cnblogs.com/anyehome/p/9068971.html
Copyright © 2020-2023  润新知