因此,由于一些非常糟糕的设计选择,我被一个复杂且不可替代的交互式控制台应用程序所困扰,该应用程序永远在 Debian 机器上运行。
这个应用程序重复执行一些任务,并返回stdout
如下结果:
InvetoryOpt: Finished
PBridged: Finished
FLoot: ERROR
我需要确保每 x 分钟我都会InvetoryOpt: Finished
在程序的输出中得到字符串。如果不是我需要杀死它,运行其他脚本,再次启动程序并检查。
我怎样才能做到这一点?我正在考虑,expect
但我没有太多经验,我不确定我是否能够每 x 分钟检查一次输出是否与字符串匹配。
笔记:
- 该程序还输出了许多我不关心的其他垃圾;
- 该程序可以
InvetoryOpt: Finished
在 30 分钟内多次输出相同的字符串,或者根本不输出任何内容。所以拖尾文件的末尾不会这样做,因为它会匹配该字符串的最后一个输出。
谢谢你。
您可以使用下面的脚本作为包装控制器。我假设 bash 是已知的,所以没有技术评论。如果你想要它们,我可以添加它们。
您提到的脚本的变量 PROGRAM 和 OTHER_SCRIPT 需要定义。
时间控制是刚性的,即。它不会将倒计时重置为最后
InvetoryOpt: Finished
一条消息时间,只是每 30 分钟检查一次。如果你需要的话,我可以想办法改进它。更新:添加了陷阱。