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 @   ascertain  阅读(75)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示