免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1893 | 回复: 2
打印 上一主题 下一主题

实在是走头无路啦,看看这里有没有办法,关于后台 wait [PID]相关的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-15 10:58 |只看该作者 |倒序浏览
1.sh, 2.sh, 3.sh的内容都为:
#!/bin/bash
sleep 50

然后执行下面的脚步,我希望当我kill掉其中任何一个sleep进程时,脚本错误退出并且将其他sleep进程都kill掉(这个只是测试脚本,不能用grep sleep然后kill等简单方法)
#!/bin/bash
. ./1.sh &
i=$!
. ./2.sh &
j=$!
. ./3.sh &
k=$!
wait $i && wait $j && wait $k
if [ $? -eq 0 ];then
echo "success!"
else
echo "failed!"
pkill -P $i
pkill -P $j
pkill -P $k
fi

上面的脚本在执行时,只有当我去kill 1.sh产生的sleep时才能达到我的目的,但是当我kill 2.sh或者3.sh产生的sleep时,则无法达到我的目的
各位帮我看看!谢谢了

论坛徽章:
0
2 [报告]
发表于 2009-12-15 19:12 |只看该作者
我的问题有问题吗?

论坛徽章:
0
3 [报告]
发表于 2009-12-16 12:18 |只看该作者
wait $i && wait $j && wait $k

第一个 wait $1 是等待 $i 进程推出(也就是说 1.sh 没结束他不会结束),所以 kill 掉 2.sh 没用。阻塞在 wait $i 了。

换个思路吧,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP