系统性能信息模块psutil

  • 跨平台库
  • 轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。
  • 主要用于系统监控,分析和限制系统资源及进程的管理
  • 实现同等命令行工具提供的功能(ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice, iostat、iotop、uptime、pidof、tty、taskset、pmap)等

源码安装步骤

# wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate
# tar -xzvf psutil-2.0.0.tar.gz
# cd psutil-2.0.0.tar.gz
# python setup.py install

备注:在执行最后一步安装时可能出现如下报错

.....
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
.....

我上网查了一下,先安装下面这个包就ok了

sudo apt-get install python-dev

获取系统性能信息

采集系统的基本性能信息包括CPU、内存、磁盘、网络等,可以完整描述当前系统的运行状态和质量。

获取CPU信息

Linux操作系统的CPU利用率有以下几部分:

  • User Time:执行用户进程的时间百分比
  • System Time:执行内核进程和中断的时间百分比
  • Wait IO:由于IO等待使CPU处于idle(空闲)状态的时间百分比
  • Idle:CPU处于idle状态的时间百分比

使用psutil.cpu_times()方法可以非常简单的得到这些信息,同时也可获取CPU的硬件相关信息,比如CPU的物理个数和逻辑个数

>>> import psutil
>>> psutil.cpu_times() #获取CPU完整信息,若需要显示所有逻辑CPU信息,指定方法变量percpu=True即可,如psutil.cpu_times(percpu=True)
scputimes(user=23434.91, nice=113.03, system=9915.3, idle=3431610.53, iowait=2935.88, irq=0.0, softirq=104.9, steal=0.0, guest=0.0, guest_nice=0.0)
>>> psutil.cpu_times().user
23437.62
>>> psutil.cpu_count()
8
>>> psutil.cpu_count(logical=False)
1

获取内存信息

Linux系统的内存利用率信息涉及total(内存总数)、used(已使用的内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)等

具体使用如下:

>>> psutil.virtual_memory()
svmem(total=8246726656L, available=5614632960L, percent=31.9,used=5847158784L, free=2399567872L, active=3703824384, inactive=1726611456, buffers=276090880L, cached=2938974208)
>>> mem=psutil.virtual_memory()
>>> mem
svmem(total=8246726656L, available=5613244416L, percent=31.9, used=5848616960L, free=2398109696L, active=3704242176, inactive=1726664704, buffers=276090880L, cached=2939043840)
>>> mem.percent
31.9
>>> mem.free
2398109696L
>>> swap=psutil.virtual_memory()
>>> swap
svmem(total=8246726656L, available=5645967360L, percent=31.5, used=5819650048L, free=2427076608L, active=3671724032, inactive=1730355200, buffers=276090880L, cached=2942799872)

获取磁盘信息

1.磁盘完整信息:psutil.disk_partitions()

>>> psutil.disk_partitions()
[sdiskpart(device='/dev/sda2', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sda1', mountpoint='/boot/efi', fstype='vfat', opts='rw')]

2.磁盘利用率:psutil.disk_usage('磁盘name')

>>> psutil.disk_usage('/')
sdiskusage(total=975513235456, used=26903121920, free=899033231360, percent=2.8)

3.磁盘IO信息:psutil.disk_io_counters()

  • read_count(读IO数)
  • write_count(写IO数)
  • read_bytes(IO读字节数)
  • write_bytes(IO写字节数)
  • read_time(磁盘读时间)
  • write_time(磁盘写时间)
>>> psutil.disk_io_counters()	#获取磁盘IO个数、读写信息
sdiskio(read_count=52288, write_count=829577, read_bytes=1680531456, write_bytes=31535281152, read_time=704980, write_time=7189056)
>>> psutil.disk_io_counters().write_count
829611
>>> psutil.disk_io_counters(perdisk=True) #此参数获取单个分区IO个数、读写信息
省略

获取网络信息

系统的网络信息与磁盘IO类似(psutil.net_io_counters()),涉及以下几个关键点:

  • bytes_sent(发送字节数)
  • bytes_recv(接收字节数)
  • packets_sent(发送数据包数)
  • packets_recv(接收数据包数)等
>>> psutil.net_io_counters()
snetio(bytes_sent=242647738, bytes_recv=591544314, packets_sent=1455844, packets_recv=1779176, errin=0, errout=0, dropin=0, dropout=0)
>>> psutil.net_io_counters(pernic=True)
{'lo': snetio(bytes_sent=17429720, bytes_recv=17429720, packets_sent=217121, packets_recv=217121, errin=0, errout=0, dropin=0, dropout=0), 'docker0': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'eth0': snetio(bytes_sent=225221972, bytes_recv=574119442, packets_sent=1238756, packets_recv=1562090, errin=0, errout=0, dropin=0, dropout=0)}

其他系统信息

psutil模块还支持获取用户登录、开机时间等信息,操作如下:

>>> psutil.users()
[suser(name='ruanyang', terminal=':0', host=':0', started=1473233792.0), suser(name='ruanyang', terminal='pts/14', host=':0', started=1473237248.0)]
>>> psutil.boot_time()
1473233706.0
>>> datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
'2016-09-07 15:35:06'

系统进程管理方法

功能:获取进程信息,得知应用程序的运行状态,包括进程的启动时间、查看或设置CPU亲和度、内存使用率、IO信息、socket连接、线程数等

作用:这些信息可呈现出指定进程是否存活、资源利用情况,为开发人员的代码优化、问题定位提供更好的数据参考

获取进程信息

psutil.pids():获取所有进程的PID

psutil.Process():获取单个进程的名称、路径、状态、系统资源利用率等信息

>>> psutil.pids()				#列出所有进程的Pid
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28]
>>> p=psutil.Process(1) #实例化一个Process对象,参数为一进程的PID
>>> p.name() #进程名
'init'
>>> p.exe() #进程bin路径
'/sbin/init'
>>> p.cwd() #进程工作目录绝对路径
'/'
>>> p.status() #进程状态
'sleeping'
>>> p.create_time() #进程创建时间,时间戳格式
1473233706.04
>>> p.uids() #进程uid信息
puids(real=0, effective=0, saved=0)
>>> p.gids() #进程gid信息
pgids(real=0, effective=0, saved=0)
>>> p.cpu_times() #进程CPU时间信息,包括user、system两个CPU时间
pcputimes(user=0.6, system=0.74)
>>> p.cpu_affinity() #get进程CPU亲和度,若要设置进程CPU亲和度,将CPU号作为参数即可
[0, 1, 2, 3, 4, 5, 6, 7]
>>> p.memory_percent() #进程内存利用率
0.05473434719357334
>>> p.memory_info() #进程内存rss、vms信息
pmem(rss=4513792, vms=34713600)
>>> p.io_counters() #进程IO信息,包括读写IO数及字节数
pio(read_count=2174812, write_count=973346, read_bytes=754508288, write_bytes=2169106432)
>>> p.connections() #返回打开进程socket的namedutples列表,包括fs、family、laddr等信息
[]
>>> p.num_threads() #进程开启的线程数
1

popen类的使用

>>> p=psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE)
>>> p.name()
'python'
>>> p.username()
'root'
>>> p.communicate()
('hello\n', None)

学习书本:《Python自动化运维技术与最佳实践》--刘天斯

本文为原创,若转载,请注明出处,谢谢

python之系统性能信息模块psutil的更多相关文章

  1. python自动化运维笔记1 —— 系统性能信息模块psutil

    一.系统基础信息模块 1.1 系统性能信息模块psutil psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率( ...

  2. 系统性能信息模块psutil

    目录 前言 获取系统性能信息 CPU 内存 磁盘 网络信息 其他系统信息 系统进程管理方法 进程信息 popen类 查看系统硬件的小脚本 前言 psutil 是一个跨平台库,能够轻松实现获取系统运行的 ...

  3. 系统性能信息模块--psutil

    #安装psutil模块#pip install psutil -i https://pypi.doubanio.com/simple #导入psutil模块import psutilimport da ...

  4. 监控系统信息模块psutil

    About psutil (python system and process utilities) is a cross-platform library for retrieving inform ...

  5. 1.python系统性能信息模块之psutil模块

    Psutil(进程和系统实用程序)是一个跨平台的库,用于在Python中检索有关运行进程和系统资源利用率(CPU,内存,磁盘,网络)的信息.它主要用于系统监视,分析和限制系统资源及运行进程的管理.它实 ...

  6. 系统性能信息模块之psutil模块

    一.psutil模块介绍 官方网址:https://pypi.org/ psutil模块安装:https://github.com/giampaolo/psutil/blob/master/INSTA ...

  7. Python自动化运维——系统性能信息模块

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:psutil psutil是一个跨平台库,可以很轻松的为我们实现获取系统运行的进程和资源利用率等信息. 功能 ...

  8. 系统性能模块psutil

    psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括cpu.内存.磁盘.网络等)信息.它主要用于系统监控,分析和限制系统资源及进程的管理.它实现了同等命令行工具提供的功能,如p ...

  9. 【321】python进程监控:psutil

    参考:Python进程监控-MyProcMonitor 参考:Python3.6 安装psutil 模块和功能简介 参考:psutil module (Download files) 参考:廖雪峰 - ...

随机推荐

  1. Beta版本冲刺第五天

    Aruba 408 409 410 428 429 431 完成任务: 数据库对于分类新建/删除的更新 调整图片再编辑界面的合适大小 调整常驻通知栏按钮的跳转逻辑 微调数据库 立会照片: 燃尽图: c ...

  2. Java 配置maven及阿里云镜像

    一:配置maven 1.下载maven,选择Binary tar.gz,解压拷贝到目录/usr/local/ https://maven.apache.org/download.cgi 2.配置系统默 ...

  3. CCS5.2/CCS5.3/CCS5.4 仿真调试小技巧

    操作系统: WinXP 32bit 仿真器: SEED-XDS560 Plus 开发环境: DSP.com/forum.php?mod=forumdisplay&fid=58" ta ...

  4. MVC IIS环境部署注意事项

    环境:MVC3.0,IIS7 Mvc3.0的部署除像正常部署aspx程序一样外,另外还需要注意的几点: 1. 安装MVC3.0 确保服务器上安装了MVC3.0,默认版本是“3.0.20105.0” 2 ...

  5. Web API系列(一)设计经验与总结

    在移动互联网的时代, Web服务已经成为了异构系统之间的互联与集成的主要手段,各种 Web服务几乎都采用REST风格的Web Api来构建. 通过Http协议的形式来. 以Get/Post方式发送请求 ...

  6. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  7. 连接池的实现 redis例子

    # -*- encoding:utf-8 -*- # import pymysql # # conn = pymysql.connect(host="127.0.0.1", por ...

  8. js中数组去除重复项目

    js语法技巧:if(a>=5)  alert();  可以改写成下边语句:  a>=5&&alert(); 在下文中会用到这种写法 // for循环删除后面重复的 速度最快 ...

  9. c语言第一章第一节 认识变量

    声明:本人大一新生,闲着无聊..写写c语言教程..菜鸟一枚..大神勿喷!!! 接下来我们都用dev来进行编译..vc++太古老了,没提示功能,不好上手,并且老是出毛病..vs太大了,编个c不至于,运行 ...

  10. Hive metastore三种配置方式

    http://blog.csdn.net/reesun/article/details/8556078 Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储.远端存储比较适 ...