加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

用于特定输出的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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读