shell Concurrence并发

 

  1. #!/bin/bash
    
    echo $BASHPID
    
    for _ in `seq 100`;do
            echo start
            sleep 5
            echo $BASH_SUBSHELL
            echo stop
    done &
    
    sleep 20

     

     7267是脚本进程,其又开启了两个进程7268 7269,7268是for loop放到后台产生的进程与父进程同名
    20S后7267 主脚本进程结束,7269 sleep 20进程结束,7268进程挂靠到systemd下

     

     此种情况没有把最主要的循环至于后台并发处理

    #!/bin/bash
    
    echo $BASH_SUBSHELL
    echo $BASHPID
    echo `basename $0`
    
    while true;do
            sleep 5
            echo ppppp
    done &
    
    sleep 10
    View Code

     

  2. #!/bin/bash
    
    echo $BASHPID
    
    for _ in `seq 100`;do
    {
            echo start
            sleep 5
            echo $BASH_SUBSHELL
            echo stop
    } &
    done
    
    sleep 20

    上面的格式把循环并发处理

  3. #!/bin/env sh
    
    for b in `seq 1 5`;do
    {
            for p in {a..d};do
                    echo $p
                    sleep 2
            done
    } &
    done
    wait

    上面的脚本实现了5任务并发

posted @ 2020-10-29 12:06  ascertain  阅读(75)  评论(0编辑  收藏  举报