wait是一个shell命令,它等待给定进程完成,然后返回其退出状态。 Wait命令用于等待特定的进程ID和作业ID并返回其终止状态。
在执行大型自动化流程时,我们需要使几个模块等待到上一组模块完成并返回数据管道进入下一个模块的数据,在这种情况下,我们可以使用Wait命令直到完成上一个模块。
Wait命令如何工作?
Wait命令用于监视先前的进程,取决于先前的进程的返回状态,它将返回退出状态。例如,如果我们要等待完成特定的进程ID 13245,则当进程13245 完成 wait命令返回13245退出状态的返回值时,应使用“ wait 13245”。
-wait PID(PID-实用程序要等待终止的命令的进程ID)。-wait JID(JID-作业ID,标识要等待的后台进程,仅适用于当前Shell执行环境中的wait调用)。
Wait 命令的退出状态值取决于最后指定的PID / JID。当任何进程异常终止时,退出状态将大于128。
当它没有子进程调用并且当前shell知道的所有进程ID都已终止时,Wait命令以0值退出。如果wait命令检测到任何错误,那么它将返回1到126之间的任何值。如果最后一个进程ID是未知的,则wait命令将以值127退出。
Wait命令示例
让我们检查一些脚本以了解wait命令的工作方式。
示例1 –带有Wait命令的脚本
我们有两个脚本,分别称为“ foo.sh”和“ bar.sh”脚本。 'Foo.sh'脚本的输出数字介于1到5之间,而'bar.sh'脚本将调用foo.sh并在后台运行它,获取foo.sh的PID并等待其完成,一旦完成,它将启动“ bar.sh”完成循环。
Script – foo.sh
Script – bar.sh
Result
示例2 –没有wait命令的脚本
我们有两个脚本,分别称为“ foo.sh”和“ bar.sh”脚本。 'foo.sh'脚本输出的数字介于1到5之间,而bar.sh脚本将调用foo.sh并在后台运行它,但它不会等待foo.sh完成并执行这两个脚本。
Script – foo.sh
Script – bar.sh
Result
示例3 –具有wait命令和返回状态的脚本
“ bar.sh”脚本将调用foo.sh并在后台运行它,获取foo.sh的PID并等待其完成,一旦完成,它将启动bar.sh循环,最后,返回 foo.sh脚本的退出代码。
Script – foo.sh (Exit status = 0)
Script - foo.sh
Script – bar.sh
Result
Script – foo.sh (Exit status = NON Zero)
Script - foo.sh
Script – bar.sh
Result
结论
Wait和Sleep都是操作系统中基于时间的系统调用。 我们来看一下wait和sleep命令之间的区别。