用于特定输出的Bash脚本监视程序
发布时间:2020-12-15 22:40:20 所属栏目:安全 来源:网络整理
导读:所以这可能是一个简单的问题,但我不是一个重击程序员,我无法弄清楚这一点. 我们有一个闭源程序,它调用一个子程序,该子程序一直运行直到它退出,此时程序将再次调用子程序.这无限期地重复. 不幸的是,主程序有时会在一段随机的时间后自发地(并且反复地)无法调用
所以这可能是一个简单的问题,但我不是一个重击程序员,我无法弄清楚这一点.
我们有一个闭源程序,它调用一个子程序,该子程序一直运行直到它退出,此时程序将再次调用子程序.这无限期地重复. 不幸的是,主程序有时会在一段随机的时间后自发地(并且反复地)无法调用子程序.最终的解决方案是联系原始开发人员以获得支持,但与此同时我们需要一个快速修补程序来解决此问题. 我正在尝试编写一个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语句中删除了前导空格,并且回声输出在中间挂起,直到子程序退出,此时输出的其余部分将打印到屏幕上.有没有更好的方法来完成我需要做的事情? 提前致谢. 解决方法
我会做一些事情:
stdbuf -o0 ./program1 | grep --line-buffered "some string" | (read && reboot) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |