Linux 中的等待命令Linux 中的等待命令Linux 中的等待命令Linux 中的等待命令
  • 业务
  • 目标
  • 支持
  • 关于
  • 联系我们
  • 登录
✕

Linux 中的等待命令

发表 admin at 2025年2月28日
类别
未分类
标签

wait是Linux的内置命令,用于等待任何正在运行的进程完成。 wait 命令与特定进程 ID 或作业 ID 一起使用。当多个进程在 shell 中运行时,当前 shell 只能知道最后一个命令的进程 ID。如果这次执行了 wait 命令,那么它将应用于最后一个命令。如果 wait 命令没有给出进程 ID 或作业 ID,那么它将等待所有当前子进程完成并返回退出状态。

wait 命令的退出状态值取决于最后指定的操作数指示的命令。当任何进程异常终止时,退出状态将大于128,并且应与其他命令的退出状态值不同。当 wait 命令在没有操作数的情况下调用并且当前 shell 已知的所有进程 ID 均已终止时,该命令将以值 0 退出。如果 wait 命令检测到任何错误,则它返回 1 到 126 之间的任何值。如果最后一个进程 ID 未知,则 wait 命令以值 127 退出。本教程中介绍了如何在 Linux 中使用 wait 命令。

示例 1:对多个进程使用 wait 命令

执行以下脚本后,两个进程将在后台运行,第一个 echo 命令的进程 ID 存储在 $process_id 变量中。当使用 $process_id 执行 wait 命令时,下一个命令将等待完成第一个 echo 命令的任务。第二个等待命令与“$!”一起使用,这表示最后运行的进程的进程 ID。 ‘$?’用于读取等待命令的状态值。

#!/bin/bash
echo "testing wait command1" &
process_id=$!
echo "testing wait command2" &
wait $process_id
echo Job 1 exited with status $?
wait $!
echo Job 2 exited with status $?

输出:

$ bash wait1.sh

示例2:使用kill命令后测试等待命令

在以下脚本中,终止进程后执行 wait 命令。 sleep命令作为后台进程运行,执行kill命令终止正在运行的进程。之后,使用已终止进程的进程 ID 执行 wait 命令。输出将显示已终止进程的进程 ID。

#!/bin/bash
echo "Testing wait command"
sleep 20 &
pid=$!
kill $pid
wait $pid
echo $pid was terminated.

输出:

$ bash wait2.sh

示例3:检查退出状态值

在以下脚本中,函数 check() 由两个参数值调用。本教程开头讨论过,如果 wait 命令执行成功,退出值将为 0,如果 wait 命令检测到任何错误,则它将返回 1 到 126 之间的任何值。运行脚本后,如果传递 0 作为第二个参数value 然后 wait 命令成功终止,如果您传递任何大于零的值,则它将失败终止。

#!/bin/bash
function check()
{
echo "Sleep for $1 seconds"
sleep $1
exit $2
}
check $1 $2 &
b=$!
echo "Checking the status"
wait $b && echo OK || echo NOT OK

输出:

$ bash wait3.sh 3 0
$ bash wait3.sh 3 5
©2015-2025 Norria support@norria.com