Python 找出占用系统swap的程序

简介:

 今天程序哥说机器不断死机,后发现是swap用完了导致,现需要找出哪些进程占用了swap,网上找了一下办法,就是查看/proc下面的进程号目录里面的smaps文件,如下:

tail -n 18 /proc/19454/smaps


 
 
  1. ffde1000-ffdf6000 rw-p 7ffffffea000 00:00 0                              [stack] 
  2. Size:                84 kB 
  3. Rss:                  8 kB 
  4. Shared_Clean:         0 kB 
  5. Shared_Dirty:         0 kB 
  6. Private_Clean:        0 kB 
  7. Private_Dirty:        8 kB 
  8. Swap:                 0 kB 
  9. Pss:                  8 kB 
  10. ffffe000-fffff000 r-xp ffffe000 00:00 0  
  11. Size:                 4 kB 
  12. Rss:                  4 kB 
  13. Shared_Clean:         4 kB 
  14. Shared_Dirty:         0 kB 
  15. Private_Clean:        0 kB 
  16. Private_Dirty:        0 kB 
  17. Swap:                 0 kB 
  18. Pss:                  0 kB 

这里中间有几行“Swap    0 kB”,将文件中所有这些行的值加起来就是这个进程占用的SWAP值,有方法了就写成脚本吧,Python脚本如下:


 
 
  1. #!/usr/bin/python 
  2. #coding:utf-8 
  3. #列出系统进程占用SWAP的情况! 
  4.  
  5. import re 
  6. import sys 
  7. import os 
  8.  
  9. def check(pid): 
  10.     #获取SWAP大小 
  11.     file_smaps = '/'.join(["/proc",pid,"smaps"]) 
  12.     f = open(file_smaps,'r'
  13.     content1 = f.read() 
  14.     f.close()   
  15.     pattern1 = r'Swap:\s+(.*)\s+kB' 
  16.     find1 = re.compile(pattern1) 
  17.     sum = 0 
  18.     for size in  find1.findall(content1): 
  19.         sum = sum + int(size) 
  20.          
  21.     #获取进程名称 
  22.     file_status = '/'.join(["/proc",pid,"status"]) 
  23.     s = open(file_status, 'r'
  24.     content2 = s.read() 
  25.     s.close() 
  26.     pattern2 = r'Name:\s+(.*)' 
  27.     find2 = re.compile(pattern2) 
  28.     name = find2.findall(content2)[0
  29.      
  30.     return name,sum 
  31.  
  32. if __name__ == "__main__"
  33.     print "脚本将列出有占用SWAP的程序ID和占用的SWAP大小:" 
  34.     print "%-5s    %-10s    %s" %    ('PID','SWAP(kB)','NAME'
  35.     print "----------------------------------------------------" 
  36.     for pid in  os.listdir("/proc"): 
  37.         if pid.isdigit(): 
  38.             name,size = check(pid) 
  39.             if size: 
  40.                 print "%-5s    %-10s    %s" %    (pid, size, name) 

运行效果如下图:

本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/1031550如需转载请自行联系原作者


lihuipeng

 

相关文章
|
30天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统源码+运行步骤
基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
66 7
|
3月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
303 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
9天前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
31 5
|
21天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统源码+运行
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
42 9
|
19天前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
51 3
|
25天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的摄影网上预约管理系统源码+运行
基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
39 8
|
22天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统源码+运行
基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
49 5
|
26天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的民宿客房预订管理系统源码运行
基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
55 8
|
21天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
38 2
|
28天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的反诈视频宣传管理系统源码+运行步骤
基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的反诈宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
44 6

热门文章

最新文章

下一篇
oss创建bucket