Linux中的等待命令用实际例子解释

wait 命令是 Linux 附带的,因此您可以在所有 Linux 发行版中找到它。 在进程停止之前,它会等待它完成。 当您包含进程或作业 ID 时,您应该使用 wait 命令。 简单地说,包含 ID 的等待命令将继续等待,直到进程完成并返回终止状态。 所以如果你也想使用 wait 命令,我们建议你通读这篇文章。

什么是等待命令?

当我们谈论管理自动化工作流程时,Linux 中的等待命令被证明是一个有价值且简单的过程。 此外,它还可以帮助您正确设置流程,以便自动化顺利进行。 例如,使用 wait 命令,您需要确保当前模块执行完毕后,下一个模块才能开始工作。

该命令密切监视前一个进程。 完成前一个过程后,将向命令发送一个状态。 因此,如果您正在等待 ID 为 25351 的进程完成,wait 命令将在完成时提交退出状态。 其退出状态将在其返回消息中找到。 这是 wait 命令的一般语法:

wait [options] ID

ID(PID) –> 如果您选择此选项,进程 ID(等待 PID)将一直等到实用程序终止。 您可以通过以下命令找到进程的PID:

pidof <process name>

为了 example,我们想找到的PID Firefox,然后我们将在终端中执行以下命令:

Linux中等待命令的实例

下面是 wait 命令的一些示例,可以帮助您更好地理解它。 我们使用了不同的场景并相应地创建了脚本,让我们来看看它们:

1. 多进程等待命令

在这 example,我们将确定具有众多进程的等待命令的功能。 我们将起草一个脚本,我们可以在其中继续运行两个命令,然后等待它们执行。 我们创建了一个 bash 包含以下信息的脚本“ubuntupit.sh”:

#! /bin /bash

echo "wait vlc" &

process_id=$!

echo "wait firefox" &

wait $process_id

echo process 1 ended as $?

echo process 2 ended as $?

创建上述脚本后,我们在终端中执行了以下命令:

bash ubuntupit.sh

我们还可以在 shell 脚本中使用 wait 命令,用于生成子进程。 所以这是一个简单的脚本:

#! /bin /bash

vlc &

process_id=$!

echo "PID: $process_id"

wait $process_id

echo "Exit Details: $?"

在上面的命令中:

  • 第一行由 shebang 组成,第二行包含 vlc & 用于在其中使用等待命令。
  • 美元! 作为内部 bash 用于存储在后台运行的最后一个进程的 PID 的变量。
  • PID 被传递给下一行中的给定等待命令,该命令将一直等到 vlc 播放器关闭。
  • 最后,系统会打印等待命令的退出细节。

现在,在终端中执行这个脚本:

等待 vlc 脚本的命令

我们还可以在脚本中使用 -n 选项来获得不同的结果。 这是一个包含 -n 选项的脚本“Ubuntupit2.sh”:

#! /bin /bash

vlc

firefox

wait -n

echo "First process ended"

wait

echo "All processes ended"

上述脚本中的 -n 选项会延迟打印 echo 语句,直到第一个进程完成。 wait 命令一直等到所有后台进程都完成。

等待多个过程的命令

2. 使用等待命令杀死一个进程

关于第二个 example 关于等待命令,我们将运行一个名为 ubuntupit3.sh 的脚本来终止一个进程,然后我们将运行等待命令。

#! /bin/bash
echo "Kill a Process"
vlc &
process_id=$!
kill $process_id
wait $process_id
echo $process_id is ended successfully.

您将在运行脚本时收到输出:

等待命令杀死进程

这里可以看到退出状态表示进程是否已经终止。 这 example 显示退出状态如何根据过程的结果以不同的方式返回。

3. 检查 Exit 状态值

在这个 example,可以看到函数check()函数需要两个参数; 让我们将脚本命名为 ubuntupit4.sh。 在这个脚本中,我们使用 sleep 命令来演示 example. 我们在这里定义以下函数:

#! /bin/bash

function check()

{

echo "Execute sleep for $1 seconds"

sleep $1

exit $2

}

check $1 $2 &

b=$!

echo "System is checking the status of the process"

wait $b && echo Ended Successfully || echo Not Ended Successfully

在这个函数中,我们首先反映第一个进程的长度。 然后我们使用特定信息休眠并退出进程。 我们考虑以下输入:

check $1 $2 &

b=$!

echo "System is checking the status of the process"

wait $b && echo Ended Successfully || echo Not Ended Successfully

用户输入值后,使用等待命令输出状态。 这里我们使用了 6,5 和 6,0 作为 example:

带有退出状态的等待命令

最后,见解

上面的文章包含了关于 wait 命令的所有信息,它在 Linux 中的用法,以及工作示例。 您已经了解了如何在自动化工作流程中充分利用它。 文章中提到的所有内容都充分阅读,从使用的命令到其他详细信息,并且没有遗漏任何一点。