重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关while read循环中调用ssh 远程执行代码的大坑是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
为济源等地区用户提供了全套网页设计制作服务,及济源网站建设行业解决方案。主营业务为网站设计制作、成都网站建设、济源网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
然后开始调查为什么切的这么慢.
然后开始balabala 代码日志, 发现 如果检测正常,或者没有达到lvs 切换标准的时候, 整个代码流程是能够完整跑完的.
对照日志, 开始balabala 代码. 然后突然发现了这个 while read 循环调用ssh 到远端的执行的 代码结构.
这里问题就是如果while read 里读到 各个节点 然后去检测这个节点对应健康状态.
如果这个节点需要lvs 切换了. 那么就调用ssh 到某台远端节点 执行某个操作命令.
执行这个ssh 的时候,因为ssh 要把stdin 作为输入. 所以把while read 的stdin buffer 全部读完了.
导致这个节点处理完后, while 循环, 再从头开始的时候,read 已经到达EOF 了. 然后循环退出了.
如果这个节点不够 切换标准, ok , 不会调用ssh . 那么后面的节点还在while read 的stdin buffer 里,
read 可以读到. 然后整个循环会跑完.
我们接手后, 就很方便追查问题来源了. 当然了.问题也就此解决了.
以上就是while read循环中调用ssh 远程执行代码的大坑是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。