python查看系统句柄数量_python监控系统进程句柄数

该博客介绍了如何通过Python脚本监测系统中进程的句柄使用情况,特别是针对服务开启过多句柄导致的问题。`check_pid_handle_num`函数用于检查并返回超出最大限制的进程及其句柄数量,提供了解决此类问题的方法。同时提到了使用`ulimit -n`命令查看系统当前的最大句柄数。
摘要由CSDN通过智能技术生成

之前系统出了一次问题,主要是一个服务开启了太多句柄,导致最后socket超出最大值,这次增加进程句柄数量监控:

def check_pid_handle_num(maxnum = 500):

try:

#获取当前所有进程打开句柄数

cmd = "/usr/sbin/lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr"

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)

#轮询检查当前所有进程

ret = {}

for i in p.stdout.readlines():

d = i.strip(' ').strip('\n').split(' ')

if d[0] > maxnum:

cmdd = "ps -C -p "+d[1]+"|awk '{print $6}'"

pp = subprocess.Popen(cmdd, shell=True, stdout=subprocess.PIPE)

#放入当前进程和句柄数量

ret[d[1]] = {'serv':pp.stdout.readlines()[1], 'num':d[0]}

pp.terminate()

return ret

except:

logging.error('error in check_pid_handle_num:%s', traceback.format_exc())

return []

如果超出了最大数,方法返回的是个字典{‘进程id’:{‘serv’:’服务名’, ‘num’:’打开句柄数’}}。查看系统当前最大句柄数:ulimit -n

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值