【发布时间】:2011-09-07 06:42:19
【问题描述】:
所以这可能是一个简单的问题,但我不是一个 bash 程序员,我无法弄清楚这一点。
我们有一个闭源程序,它调用一个子程序,该子程序一直运行直到退出,此时程序将再次调用该子程序。这会无限重复。
不幸的是,主程序有时会在随机的一段时间后自发地(并且反复地)调用子程序失败。最终的解决方案是联系原始开发人员以获得支持,但同时我们需要快速修复该问题。
我正在尝试编写一个 bash 脚本来监视程序的输出,当它看到特定的字符串时,它将重新启动机器(程序将在启动时再次自动运行)。 bash 脚本需要将所有标准输出传递到屏幕,直到它看到特定的字符串。程序还需要继续处理用户输入。
我尝试了以下方法,但效果有限:
./program1 | ./watcher.sh
watcher.sh 基本上就是这样:
while read line; do
echo $line
if [$line == "some string"]
then
#the reboot script works fine
./reboot.sh
fi
done
这似乎工作正常,但是在 echo 语句中去除了前导空格,并且 echo 输出在中间挂起,直到子程序退出,此时输出的其余部分被打印到屏幕上。有没有更好的方法来完成我需要做的事情?
提前致谢。
【问题讨论】: