linux shell

Linux shell wait的用法

#! /bin/bash
##启动后台子任务

# 在执行命令后加&操作符,表示将命令放在子shell中异步执行。可以达到多线程效果。
# 等待2秒,再执行下一个操作
sleep 2
echo "等待了2秒钟才到这"
# 当前shell不等待,后台子shell等待
sleep 10 &
echo "这个就不用等,直接到这"

## wait
# 等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。如果没有制定参数,则等待所有子进程的退出,其退出状态为0.
# 如果是shell中等待使用wait,则不会等待调用函数中子任务。在函数中使用wait,则只等待函数中启动的后台子任务。(例2)
# 例1
echo "等待最大值(10秒)之后退出"
sleep 5 &
sleep 10&
sleep 1 &
# 等待10秒后,退出
wait
echo "等待上个子进程(2秒)后退出"
sleep 1 &
sleep 3 &
sleep 2 &
# $! 表示Shell最后运行的后台Process的PID 
# 在这里就是表示上个子进程的进程号,wait等待上个子进程2秒后,退出
wait $!



#例2
fun(){
    echo "fun wait is begin.timeNum:$1"
    local timeNum=$1
    sleep $timeNum &
	# 这个只等待wait前面sleep
    #wait 
    
    echo "fun wait is end.timeNum:$timeNum"
}

fun 10 &
fun 20 &
# 如果fun里面没有wait,则整个脚本立刻退出,不会等待fun里面的sleep
wait 
echo "all is ending"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值