linux shell wait命令詳解
wait命令是linux下的一個命令,那么它的語法和用途是什么呢?下面由學(xué)習(xí)啦小編為大家整理了linux shell wait命令的相關(guān)知識,希望大家喜歡!
linux shell wait命令
wait命令介紹
wait [作業(yè)指示或進(jìn)程號]
1.等待作業(yè)號或者進(jìn)程號制定的進(jìn)程退出,返回最后一個作業(yè)或進(jìn)程的退出狀態(tài)狀態(tài)。如果沒有制定參數(shù),則等待所有子進(jìn)程的退出,其退出狀態(tài)為0.
2.如果是shell中等待使用wait,則不會等待調(diào)用函數(shù)中子任務(wù)。在函數(shù)中使用wait,則只等待函數(shù)中啟動的后臺子任務(wù)。
3.在shell中使用wait命令,相當(dāng)于高級語言里的多線程同步。
語法
wait(參數(shù))
參數(shù)
進(jìn)程或作業(yè)標(biāo)示:指定進(jìn)程號或者作業(yè)號。
實(shí)例
1.使用wait等待所有子任務(wù)結(jié)束。
[plain] view plain copy#!/bin/bash
sleep 10 &
sleep 5&
wait #等待10秒后,退出
[plain] view plain copy#!/bin/bash
sleep 10 &
sleep 5&
wait $! #$!表示上個子進(jìn)程的進(jìn)程號,wait等待一個子進(jìn)程,等待5秒后,退出
2.在函數(shù)中使用wait
[plain] view plain copy#!/bin/bash
source ~/.bashrc
fun(){
echo "fun is begin.timeNum:$timeNum"
local timeNum= class="main">
linux shell wait命令詳解
sleep $timeNum &
wait #這個只等待wait前面sleep
echo "fun is end.timeNum:$timeNum"
}
fun 10 &
fun 20 &
wait #如果fun里面沒有wait,則整個腳本立刻退出,不會等待fun里面的sleep
echo "all is ending"
輸出結(jié)果為:
[plain] view plain copyfun is begin.timeNum:10
fun is begin.timeNum:20
fun is end.timeNum:10
fun is end.timeNum:20
all is ending
從輸出結(jié)果,可以看到,整個腳本,等待了所有子任務(wù)的退出