终止调用 shell 脚本中的 运行 程序

terminate a running program in the calling shell script

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

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

B 计算​​和创建文本用时不到 1 分钟,但是,B 不会自行结束,return直到 6 分钟后才将控制权交给 A。

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

因此我的问题是如何重写 A 以检测文件已创建,从而立即终止 B 以重新获得控制权?如果 A 仍然必须 运行 B 在前台?可行吗?

希望我说清楚了。

谢谢! 约翰

此脚本在后台调用一个检查文件是否存在的函数,然后使用exec 运行 与原始脚本具有相同pid的脚本(这样的pid是通过[=12获得的) =]), 当文件被创建时 kill 被发送到这个 pid 然后 exec'ed 脚本被杀死:

#!/bin/bash
function checkAndKill {
    local pid=
    local filename=
    while [ ! -e $filename ]; do 
       sleep 1
    done
    kill $pid
}

checkAndKill $$ /path/of/the/file/to/check &

exec B.sh