2015-03-02 76 views
1

我编写了一个shell脚本A,它在其中调用另一个脚本B.B做的是运行一些计算并创建一个文本文件。在调用shell脚本中终止正在运行的程序

我不拥有B的代码,而A必须在前台为非技术原因调用它。

B需要不到1分钟的时间来计算和创建文本,但B不会自行结束并将控制权返回给A直到6分钟后。

现在用户抱怨为什么需要7分钟,运行脚本A.

所以我的问题是我怎么能改写立即检测文件被创建,从而终止B到重新获得控制?如果A仍然需要在前台运行B?它可行吗?

希望我已经说清楚了。

的感谢! 约翰

回答

2

这个脚本在后台调用检查文件是否存在,然后使用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 
相关问题