shell wait等待命令的具體使用
1. 簡介
bash wait 命令是一個 Shell 命令,它等待后臺運行的進程完成并返回退出狀態(tài)。與等待指定時間的sleep 命令不同,該wait命令等待所有或特定后臺任務完成。
2. 語法
在 bash 腳本中使用wait命令有不同的方法。下表解釋了每個用例。
命令 | 解釋 |
---|---|
wait | 如果沒有任何參數(shù),該wait命令會等待所有后臺進程完成,然后再繼續(xù)執(zhí)行腳本。 |
wait | 添加的 PID 或作業(yè) ID 會等待特定進程結束,然后再繼續(xù)執(zhí)行腳本。 |
wait -n | 僅等待以下后臺進程完成并返回退出狀態(tài)。 |
wait -f | 終止程序首先等待后臺任務完成后再退出。 |
3. 示例
3.1 等待命令
在 bash 腳本中使用wait時需要了解三個附加參數(shù):
1.&
命令后的和號 ( )
表示后臺作業(yè)。
2.$!
獲取最后一個后臺進程的PID。使用多個后臺進程時,將先前的 PID 存儲在一個變量中。
3.$?
打印上一個進程的退出狀態(tài)。
要查看這三個參數(shù)如何協(xié)同工作,請打開終端窗口并運行:
sleep 10 & echo $! echo $?
該$!
參數(shù)存儲后臺進程PID,同時$?
存儲退出狀態(tài)。退出狀態(tài)0表示命令成功完成。
3.2 單進程等待
首先打開終端并創(chuàng)建一個簡單的后臺進程:
sleep 10 &
確認作業(yè)在后臺運行:
jobs -l
使用wait不帶任何參數(shù)的命令暫停直到進程完成:
wait
10 秒后(由于sleep 10),控制臺打印完成消息。
3.3 單進程 bash 等待
使用該wait命令指示后臺進程必須在腳本內執(zhí)行的時間點。
例如,在文本編輯器中添加以下代碼:
#!/bin/bash echo Background process & echo First message echo Second message wait echo Third message
如果后臺進程沒有完成第一個和第二個進程,則該wait命令調用暫停以等待第二個進程之后后臺進程完成,然后再繼續(xù)執(zhí)行第三個進程。
將腳本另存為single_process.sh
。在終端中,更改權限以使腳本可執(zhí)行:
sudo chmod +x single_process.sh
運行腳本:
./single_process.sh
后臺進程在命令之前的任何時間完成wait
,并且腳本繼續(xù)。
3.4 多個進程等待
1.打開文本編輯器,添加以下多進程腳本:
#!/bin/bash sleep 10 & sleep 15 & sleep 5 & echo $(date +%T) wait echo $(date +%T)
wait該腳本在命令之前和之后打印當前時間。沒有任何參數(shù),程序會等待所有進程完成。
將腳本另存為test.sh并關閉文件。接下來,使腳本可執(zhí)行:
sudo chmod +x test.sh
最后,運行程序:
./test.sh
由于進程在后臺運行,所有三個進程都在十五秒內完成。
使用相同的腳本測試以下用例:
- 將
-n
參數(shù)添加到<strong>wait</strong>
. 只有最快的過程完成,腳本在十秒后結束。 - 添加作業(yè) ID 以指示腳本應等待哪個作業(yè)。例如,
wait %1
暫停以等待進程 1 ( sleep 10) 完成。
3.5 多個進程 bash 等待 PID
與多個進程一起工作時,使用 PID
來標識一個進程。下面的示例腳本顯示了一個用例:
#!/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
運行腳本查看輸出:
./multi_wait.sh
該腳本需要兩秒鐘來完成第一個過程(由于sleep2)和三秒鐘來完成第二個過程。這兩個過程同時執(zhí)行,都在三秒內完成。
參考:
Bash wait Command with Examples
到此這篇關于shell wait等待命令的具體使用的文章就介紹到這了,更多相關shell wait內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux 怎么實現(xiàn)添加FTP用戶并設置權限的方法
這篇文章主要介紹了Linux 怎么實現(xiàn)添加FTP用戶并設置權限的方法的相關資料,這里對添加FTP用戶進行了步驟詳解,需要的朋友可以參考下2017-01-01shell腳本實現(xiàn)拷貝大文件顯示百分比的代碼分享
這篇文章主要介紹了shell腳本實現(xiàn)拷貝大文件顯示百分比的代碼分享,需要的朋友可以參考下2014-08-08awk腳本統(tǒng)計一組單詞中字母出現(xiàn)最多最少頻率
這篇文章主要介紹編寫一個 awk 腳本來找到一組單詞中出現(xiàn)次數(shù)最多(和最少)的單詞頻率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03