文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux bash wait命令具体使用方法是什么

2023-06-28 11:27

关注

Linux bash wait命令具体使用方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

wait命令可以使当前shell进程挂起,等待所指定的由当前shell产生的子进程退出后,wait命令才返回。wait命令的参数可以是进程ID或是job。

Bash wait命令

wait内置的一般语法采用以下形式:

 wait [options] ID

Copy

ID是进程或任务ID。 如果没有指定ID,则命令等待所有后台任务直到完成。

wait命令返回wait的最后一个命令的退出状态。

例如,要wait PID 7654的后台进程,您将使用:

 wait 7654

Copy

当给出多个进程时,命令等待所有进程完成。

使用jobspec指定作业,这是一种引用构成作业的进程的方法。 Jobspec以百分比符号开始,后跟作业编号(%n)。 这是一个在后台运的ded例子:

 rsync -a /home /tmp/home &

Copy

shell作业ID(括号括起来)和进程ID将显示在终端上:

 [2] 54377

Copy

等待作业,运行wait命令后跟Jobspec:

 wait %2

Copy

在使用-n选项中调用时,命令仅在指定的PID或Jobspecs中仅等待单个作业完成并返回其退出状态。 如果没有提供参数,wait -n等待任何后台作业完成并返回作业退出状态。

 wait -n 45432 54346 76573

Copy

在上面的示例中,wait -n仅打印首先退出的作业的返回状态; 它没有显示进程的PID。 如果要获取返回退出状态的进程PID或Jobspec,请使用-p选项将其分配给变量:

 wait -p job_id -n 45432 54346 76573

Copy

-p选项在BASH 5.1中引入。 如果使用较旧的BASH版本,您将获得“invalid option”错误。

-f选项告诉wait等待每个PID或JOBSPEC在返回其退出代码之前终止,而不是在更改作业状态时返回。 启用作业控件时,此选项仅有效。 默认情况下,仅为交互式提示启用作业控件。

例子

wait通常用于shell脚本生成并行执行的子进程。

为了说明命令如何工作,创建以下脚本:

 #!/bin/bash sleep 30 & process_id=$! echo "PID: $process_id" wait $process_id echo "Exit status: $?"

Copy

让我们按行解释代码行:

打印wait命令的退出状态。 $?是内部Bash变量,用于保存最后执行的命令的退出状态。

如果您运行脚本,它将打印这样的内容:

 PID: 36353 Exit status: 0

Copy

这里使用-n选项的示例:

 #!/bin/bash sleep 3 & sleep 30 & sleep 5 & wait -n echo "First job completed." wait echo "All jobs completed."

Copy

执行脚本时,它会产生3个后台进程。 wait -n等待直到完成第一个作业并打印echo语句。 wait等待所有后台任务完成。

 first job completed all jobs completed

Copy

最后一个示例说明-f选项。 打开终端并运行:

 sleep 3600 &

Copy

 [1] 46671

Copy

等待这个进程:

 wait 46671

Copy

打开另一个终端并使用kill命令停止进程:

 kill -STOP 46671

Copy

一旦改变了进程状态,wait命令将完成并返回进程退出代码。

现在,重复相同的步骤,但这一次使用wait -f $pid:

 sleep 3600 & wait -f 46671

Copy

停止另一个终端的进程:

 kill -STOP 46671

Copy

这次wait命令将无法完成。 它将在sleep进程终止之前运行。

看完上述内容,你们掌握Linux bash wait命令具体使用方法是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯