在调用shell脚本中终止正在运行的程序
问题描述:
我编写了一个shell脚本A,它在其中调用另一个脚本B.B做的是运行一些计算并创建一个文本文件。在调用shell脚本中终止正在运行的程序
我不拥有B的代码,而A必须在前台为非技术原因调用它。
B需要不到1分钟的时间来计算和创建文本,但B不会自行结束并将控制权返回给A直到6分钟后。
现在用户抱怨为什么需要7分钟,运行脚本A.
所以我的问题是我怎么能改写立即检测文件被创建,从而终止B到重新获得控制?如果A仍然需要在前台运行B?它可行吗?
希望我已经说清楚了。
的感谢! 约翰
答
这个脚本在后台调用检查文件是否存在,然后使用exec
运行具有相同PID原始脚本的脚本(如PID与$$
获得),当文件被创建的杀菌作用的功能被发送到该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