我写了一个shell脚本,A,它调用另一个脚本,B。B做的是运行一些计算并创建一个文本文件。
我不拥有B的代码,而且由于非技术原因,A必须在前台调用它。
B计算和创建文本的时间不到1分钟,但是B不会自行结束并将控制权返回给A,直到6分钟后。
现在用户抱怨为什么运行脚本A需要7分钟。
因此,我的问题是如何重写A以检测文件是否已创建,从而立即终止B以重新获得控制权?如果A仍然需要在前台运行B?它可行吗?
希望我已经清楚了。谢谢! 约翰
答案 0 :(得分:2)
此脚本在后台调用一个函数来检查文件是否存在,然后使用exec
运行脚本与原始脚本的相同pid(这样的pid是通过$$
获得的),当创建文件后,kill被发送到此pid,然后exec
' ed脚本被终止:
#!/bin/bash
function checkAndKill {
local pid=$1
local filename=$2
while [ ! -e $filename ]; do
sleep 1
done
kill $pid
}
checkAndKill $$ /path/of/the/file/to/check &
exec B.sh