加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

使linux“等待”命令等待所有子进程

发布时间:2020-12-13 18:30:24 所属栏目:Linux 来源:网络整理
导读:等待不等待所有子进程停止.这是我的脚本: #!/bin/bashtitlename=`echo "$@"|sed 's/..{3}$//'`screen -X title "$titlename"/usr/lib/process.bash -verbose $@waitbash -c "mail.bash $@"screen -X title "$titlename.Done" 我没有访问/usr/lib/process
等待不等待所有子进程停止.这是我的脚本:
#!/bin/bash

titlename=`echo "$@"|sed 's/..{3}$//'`
screen -X title "$titlename"

/usr/lib/process.bash -verbose $@

wait

bash -c "mail.bash $@"
screen -X title "$titlename.Done"

我没有访问/usr/lib/process.bash,但它是一个经常更改的脚本,所以我想引用它…但是在那个脚本中:

#!/bin/ksh
#lots of random stuff
/usr/lib/runall $path $auto $params > /dev/null 2>&1&

我的问题是runall创建了一个日志文件…而mail.bash假设要将该日志文件邮寄给我,但是等待不等待runall完成,它似乎只是在等待process.bash完成.无论如何,没有访问process.bash,或试图保持我自己的最新版本的process.bash,以使等待正确等待runall完成? (日志文件会覆盖以前的运行,所以我不能只检查是否存在日志文件,因为总有一个存在)

谢谢,

解决方法

(
    . /usr/lib/process.bash -verbose $@
    wait
)

而不是让操作系统启动process.bash,这会创建一个子shell,运行process.bash中的所有命令,就像它们被输入我们的shell脚本一样,并在该子shell中等待.

这有一些警告,但如果你没有做任何不寻常的事情,它应该有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读