最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell wait等待命令的具體使用

 更新時(shí)間:2023年01月12日 10:17:38   作者:ghostwritten  
本文主要介紹了shell wait等待命令的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 簡(jiǎn)介

bash wait 命令是一個(gè) Shell 命令,它等待后臺(tái)運(yùn)行的進(jìn)程完成并返回退出狀態(tài)。與等待指定時(shí)間的sleep 命令不同,該wait命令等待所有或特定后臺(tái)任務(wù)完成。

2. 語(yǔ)法

在 bash 腳本中使用wait命令有不同的方法。下表解釋了每個(gè)用例。

命令解釋
wait如果沒有任何參數(shù),該wait命令會(huì)等待所有后臺(tái)進(jìn)程完成,然后再繼續(xù)執(zhí)行腳本。
wait添加的 PID 或作業(yè) ID 會(huì)等待特定進(jìn)程結(jié)束,然后再繼續(xù)執(zhí)行腳本。
wait -n僅等待以下后臺(tái)進(jìn)程完成并返回退出狀態(tài)。
wait -f終止程序首先等待后臺(tái)任務(wù)完成后再退出。

3. 示例

3.1 等待命令

在 bash 腳本中使用wait時(shí)需要了解三個(gè)附加參數(shù):

1.&命令后的和號(hào) ( ) 表示后臺(tái)作業(yè)。

2.$!獲取最后一個(gè)后臺(tái)進(jìn)程的PID。使用多個(gè)后臺(tái)進(jìn)程時(shí),將先前的 PID 存儲(chǔ)在一個(gè)變量中。

3.$?打印上一個(gè)進(jìn)程的退出狀態(tài)。

要查看這三個(gè)參數(shù)如何協(xié)同工作,請(qǐng)打開終端窗口并運(yùn)行:

sleep 10 &
echo $!
echo $?

在這里插入圖片描述

$!參數(shù)存儲(chǔ)后臺(tái)進(jìn)程PID,同時(shí)$?存儲(chǔ)退出狀態(tài)。退出狀態(tài)0表示命令成功完成。

3.2 單進(jìn)程等待

首先打開終端并創(chuàng)建一個(gè)簡(jiǎn)單的后臺(tái)進(jìn)程:

sleep 10 &

確認(rèn)作業(yè)在后臺(tái)運(yùn)行:

jobs -l

使用wait不帶任何參數(shù)的命令暫停直到進(jìn)程完成:

wait

在這里插入圖片描述

在這里插入圖片描述

10 秒后(由于sleep 10),控制臺(tái)打印完成消息。

3.3 單進(jìn)程 bash 等待

使用該wait命令指示后臺(tái)進(jìn)程必須在腳本內(nèi)執(zhí)行的時(shí)間點(diǎn)。

例如,在文本編輯器中添加以下代碼:

#!/bin/bash
echo Background process &
echo First message
echo Second message
wait
echo Third message

如果后臺(tái)進(jìn)程沒有完成第一個(gè)和第二個(gè)進(jìn)程,則該wait命令調(diào)用暫停以等待第二個(gè)進(jìn)程之后后臺(tái)進(jìn)程完成,然后再繼續(xù)執(zhí)行第三個(gè)進(jìn)程。

將腳本另存為single_process.sh。在終端中,更改權(quán)限以使腳本可執(zhí)行:

sudo chmod +x single_process.sh

運(yùn)行腳本:

./single_process.sh

在這里插入圖片描述

后臺(tái)進(jìn)程在命令之前的任何時(shí)間完成wait,并且腳本繼續(xù)。

3.4 多個(gè)進(jìn)程等待

1.打開文本編輯器,添加以下多進(jìn)程腳本:

#!/bin/bash
sleep 10 &
sleep 15 &
sleep 5 &
echo $(date +%T)
wait 
echo $(date +%T)

wait該腳本在命令之前和之后打印當(dāng)前時(shí)間。沒有任何參數(shù),程序會(huì)等待所有進(jìn)程完成。

將腳本另存為test.sh并關(guān)閉文件。接下來,使腳本可執(zhí)行:

sudo chmod +x test.sh

最后,運(yùn)行程序:

./test.sh

在這里插入圖片描述

由于進(jìn)程在后臺(tái)運(yùn)行,所有三個(gè)進(jìn)程都在十五秒內(nèi)完成。

使用相同的腳本測(cè)試以下用例:

  • -n參數(shù)添加到<strong>wait</strong>. 只有最快的過程完成,腳本在十秒后結(jié)束。
  • 添加作業(yè) ID 以指示腳本應(yīng)等待哪個(gè)作業(yè)。例如,wait %1暫停以等待進(jìn)程 1 ( sleep 10) 完成。

3.5 多個(gè)進(jìn)程 bash 等待 PID

與多個(gè)進(jìn)程一起工作時(shí),使用 PID 來標(biāo)識(shí)一個(gè)進(jìn)程。下面的示例腳本顯示了一個(gè)用例:

#!/bin/bash
echo "Process 1 lasts for 2s" && sleep 2 &
PID=$!
echo "Process 2 lasts for 3s" && sleep 3 &
echo "Current time $(date +%T)"
wait $PID
echo "Process 1 ended at time $(date +%T) with exit status $?"
wait $!
echo "Process 2 ended at time $(date +%T) with exit status $?"

將腳本另存為multi_wait.sh。使腳本可執(zhí)行:

sudo chmod +x multi_wait.sh

運(yùn)行腳本查看輸出:

./multi_wait.sh

在這里插入圖片描述

該腳本需要兩秒鐘來完成第一個(gè)過程(由于sleep2)和三秒鐘來完成第二個(gè)過程。這兩個(gè)過程同時(shí)執(zhí)行,都在三秒內(nèi)完成。

參考:

Bash wait Command with Examples

到此這篇關(guān)于shell wait等待命令的具體使用的文章就介紹到這了,更多相關(guān)shell wait內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

南华县| 治多县| 乌兰浩特市| 翁源县| 汪清县| 七台河市| 海阳市| 潞西市| 射阳县| 定兴县| 大埔区| 原平市| 蒲江县| 博爱县| 扎兰屯市| 双鸭山市| 观塘区| 肥城市| 黔西| 河源市| 延庆县| 涪陵区| 大庆市| 大渡口区| 阿荣旗| 临高县| 清苑县| 彭水| 晋江市| 甘洛县| 呈贡县| 桂东县| 鄢陵县| 宽城| 金昌市| 连州市| 霍林郭勒市| 甘孜县| 西平县| 元江| 利川市|