shell wait 等待命令
1. 简介
bash wait 命令是一个 Shell 命令,它等待后台运行的进程完成并返回退出状态。与等待指定时间的sleep 命令不同,该wait命令等待所有或特定后台任务完成。
2. 语法
在 bash 脚本中使用wait命令有不同的方法。下表解释了每个用例。
命令 | 解释 |
---|---|
wait | 如果没有任何参数,该wait命令会等待所有后台进程完成,然后再继续执行脚本。 |
wait | 添加的 PID 或作业 ID 会等待特定进程结束,然后再继续执行脚本。 |
wait -n | 仅等待以下后台进程完成并返回退出状态。 |
wait -f | 终止程序首先等待后台任务完成后再退出。 |
3. 示例
3.1 等待命令
sleep 10 &
echo $!
echo $?
该$!
参数存储后台进程PID,同时$?
存储退出状态。退出状态0表示命令成功完成。
3.2 单进程等待
sleep 10 &
jobs -l
- 使用wait不带任何参数的命令暂停直到进程完成:
wait
3.3 单进程 bash 等待
#!/bin/bash
echo Background process &
echo First message
echo Second message
wait
echo Third message
如果后台进程没有完成第一个和第二个进程,则该wait命令调用暂停以等待第二个进程之后后台进程完成,然后再继续执行第三个进程。
sudo chmod +x single_process.sh
./single_process.sh
后台进程在命令之前的任何时间完成wait
,并且脚本继续。
3.4 多个进程等待
#!/bin/bash
sleep 10 &
sleep 15 &
sleep 5 &
echo $(date +%T)
wait
echo $(date +%T)
wait该脚本在命令之前和之后打印当前时间。没有任何参数,程序会等待所有进程完成。
sudo chmod +x test.sh
./test.sh
由于进程在后台运行,所有三个进程都在十五秒内完成。
- 将
-n
参数添加到<strong>wait</strong>
. 只有最快的过程完成,脚本在十秒后结束。 - 添加作业 ID 以指示脚本应等待哪个作业。例如,
wait %1
暂停以等待进程 1 ( sleep 10) 完成。
3.5 多个进程 bash 等待 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 $?"
sudo chmod +x multi_wait.sh
./multi_wait.sh
该脚本需要两秒钟来完成第一个过程(由于sleep2)和三秒钟来完成第二个过程。这两个过程同时执行,都在三秒内完成。
参考:
原文地址:https://blog.csdn.net/xixihahalelehehe/article/details/127348688
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_13761.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。