linux popen阻塞_popen执行某些命令,pclose会卡死的处理方式

在处理Linux系统中popen执行某些命令导致阻塞,特别是当命令如`pcs status`在网络延迟时无法在规定时间内返回时,可能会导致pclose卡死。为了解决这个问题,可以通过自定义mypopen和mypclose函数来实现,通过添加控制标志来选择是否等待进程结束。同时,可以封装一个getResultFromPopenLinShi函数,设置超时控制,避免长时间等待。
摘要由CSDN通过智能技术生成

在使用pacemaker维护的集群时,经常使用pcs 命令查询集群的状态,如:

pcs status 查询集群下各主机的状态

Cluster name: 111

Last updated: Tue Mar  8 10:37:39 2016

Last change: Mon Mar  7 14:22:04 2016 via crmd on cvm1457070021

Stack: corosync

Current DC: xxxxxx(2) - partition with quorum

Version: 1.1.10-32.el7.centos.1-368c726

2 Nodes configured

6 Resources configured

Online: [ xxxxxxxxx  xxxxxxxxx]

Full list of resources:

Clone Set: dlm-clone [dlm]

Started: [ xxxxxxxxx  xxxxxxxxx]

fence192.168.0.221        (stonith:fence_ipmilan):        Started xxxxxxxxxxxxx

fence192.168.0.236        (stonith:fence_ipmilan):        Started xxxxxxxxxxxxx

Clone Set: gfs2_cluster-clone [gfs2_cluster]

Started: [ xxxxxxxxx  xxxxxxxxx]

PCSD Status:

192.168.x.xxx: Online

192.168.x.xxx: Online

Daemon Status:

corosync: active/disabled

pacemaker: active/disabled

pcsd: active/enabled

资源正常时,查询结果会马上返回。但是,当网络资源紧缺或者出现延迟的时候。此命令的返回有可能超过10 seconds,但是pacemaker的校验时间低于3 seconds。如果在集群中

使用此命令维护,长时间不返回。会导致集群自动fence。

linux环境下,我们一般使用盘popen或者systemcall进行命令调用,并通过其返回值和打印值判断调用成功与否。当上述情况发生时,pclose会卡住,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值