psutil

1.简单介绍

psutil是一个跨平台的库(http://code.google.com/p/psutil/),能够轻松的实现获取系统运行的进程和系统利用率(CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。能实现同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统.有兴趣的同学可以去试试这些命令。自我感觉这个库做运维的同学还是值得玩味儿!

2.安装

[root@VM_46_121_centos python]# pip3 install psutil
我安装的是ipsutil-5.2.2这个版本!

3.基本使用

3.1 cpu相关

In [1]: import psutil
In [2]: psutil.cpu_times()#使用cpu_times获取cpu的完整信息
Out[2]: scputimes(user=769.84, nice=2.78, system=387.68, idle=83791.98, iowait=479.84, irq=0.0, softirq=0.81, steal=0.0, guest=0.0, guest_nice=0.0)
In [3]: psutil.cpu_count()#获取cpu的逻辑个数
Out[3]: 1
In [4]: psutil.cpu_times_percent()#获取cpu的所有逻辑信息
Out[4]: scputimes(user=0.7, nice=0.0, system=0.5, idle=98.4, iowait=0.4, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)

3.2内存相关

In [5]: psutil.virtual_memory()#获取内存的所有信息
Out[5]: svmem(total=1041309696, available=697958400, percent=33.0, used=176611328, free=91947008, active=516075520, inactive=323096576, buffers=102719488, cached=670031872, shared=12873728)
In [7]: psutil.virtual_memory().total
Out[7]: 1041309696
In [8]: psutil.virtual_memory().used
Out[8]: 176553984
In [9]: psutil.virtual_memory().free
Out[9]: 91901952
In [13]: psutil.swap_memory()#交换分区相关
Out[13]: sswap(total=0, used=0, free=0, percent=0, sin=0, sout=0)

3.3磁盘相关

In [14]: psutil.disk_partitions()#获取磁盘的详细信息
Out[14]: [sdiskpart(device='/dev/vda1', mountpoint='/', fstype='ext3', opts='rw,noatime,data=ordered')]
In [17]: psutil.disk_usage('/')#获取分区的使用情况
Out[17]: sdiskusage(total=21002579968, used=2223321088, free=17705578496, percent=11.2)
In [18]: psutil.disk_io_counters()#获取磁盘总的io个数,读写信息
Out[18]: sdiskio(read_count=25365, write_count=118754, read_bytes=391898112, write_bytes=3048738816, read_time=343585, write_time=10775463, read_merged_count=107, write_merged_count=583537, busy_time=623556)
补充说明下:
read_count(读IO数)
write_count(写IO数)
read_bytes(读IO字节数)
write_bytes(写IO字节数)
read_time(磁盘读时间)
write_time(磁盘写时间)

3.4网络信息

In [19]: psutil.net_io_counters()#获取网络总信息
Out[19]: snetio(bytes_sent=24172706, bytes_recv=168785879, packets_sent=163657, packets_recv=442827, errin=0, errout=0, dropin=0, dropout=0)
In [20]: psutil.net_io_counters(pernic=True)#获取每个网络接口的信息
Out[20]:
{'eth0': snetio(bytes_sent=24177750, bytes_recv=168797166, packets_sent=163685, packets_recv=442948, errin=0, errout=0, dropin=0, dropout=0),
'lo': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0)}

3.5其它信息

In [21]: psutil.users()#返回当前登录系统的用户信息
Out[21]: [suser(name='root', terminal='pts/0', host='X.X.X.X', started=1492844672.0)]
In [22]: psutil.boot_time()#获取开机时间
Out[22]: 1492762895.0
In [23]: import datetime#转换成你能看懂的时间
In [24]: datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
Out[24]: '2017-04-21 16:21:35'

4.系统进程的管理方法

[root@VM_46_121_centos ~]# ps -ef | grep ipython#这里首先我用ps获取ipython进程号
root 2407 2365 0 16:50 pts/1 00:00:00 grep --color=auto ipython
root 29735 26143 0 16:01 pts/0 00:00:07 /usr/local/bin/python3.5 /usr/local/bin/ipython
In [27]: psutil.Process(29735)
Out[27]: <psutil.Process(pid=29735, name='ipython') at 139986824457744>
In [28]: p=psutil.Process(29735)#实例化一个进程对象,参数为ipython这个进程的PID
In [29]: p.name()#获得进程名
Out[29]: 'ipython'
In [31]: p.exe()#获得进程的bin路径
Out[31]: '/usr/local/bin/python3.5'
In [32]: p.cwd()获得进程工作目录的绝对路径
Out[32]: '/usr/local/lib/python3.5/site-packages/psutil-5.2.2-py3.5.egg-info'
In [33]: p.status()#获得进程状态
Out[33]: 'running'
In [34]: p.create_time()#获得进程创建的时间,时间戳格式
Out[34]: 1492848093.13
In [45]: datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S")
Out[45]: '2017-04-22 16:01:33'
In [35]: p.uids()#获取进程的uid信息
Out[35]: puids(real=0, effective=0, saved=0)
In [36]: p.gids()#获取进程的gid信息
Out[36]: pgids(real=0, effective=0, saved=0)
In [37]: p.cpu_times()#获取进程的cpu的时间信息
Out[37]: pcputimes(user=9.53, system=0.34, children_user=0.0, children_system=0.0)
In [38]: p.cpu_affinity()#获取进程的cpu亲和度
Out[38]: [0]
In [39]: p.memory_percent()#获取进程的内存利用率
Out[39]: 6.187014703452833
In [40]: p.memory_info()#获取进程的内存rss,vms信息
Out[40]: pmem(rss=64425984, vms=304410624, shared=4755456, text=2465792, lib=0, data=201437184, dirty=0)
In [41]: p.io_counters()#获取进程的io信息
Out[41]: pio(read_count=6915, write_count=6246, read_bytes=73728, write_bytes=1658880, read_chars=9329720, write_chars=1797027)
In [43]: p.num_threads()获取进程开启的线程数
Out[43]: 1 popen类的使用:获取用户启动的应用程序的进程信息
In [55]: from subprocess import PIPE
In [50]: p1=psutil.Popen(["/usr/bin/python","-c","print('hello')"], stdout=PIPE)
In [51]: p1.name()
Out[51]: 'python'
In [52]: p1.username()
Out[52]: 'root'
In [53]: p1.communicate()
Out[53]: (b'hello\n', None)
In [54]: p.cpu_times()
Out[54]: pcputimes(user=13.11, system=0.52, children_user=0.01, children_system=0.0)

Python-psutil模块的更多相关文章

  1. 自动化之路 python psutil模块 收集硬件信息

    一.psutil模块 1. psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控,分析和限制系统资源及进程的管理.它实现了 ...

  2. python psutil 模块

    一.获取系统性能信息 1 .CPU信息 User time,执行用户进程的时间百分比 System time,执行内核进程和中断的百分比 Wait IO,由于IO等待而使CPU处于idle(空闲)状态 ...

  3. Python psutil模块使用

    import psutil # 获取内存信息 mem = psutil.virtual_memory() total = mem.total / 1024 / 1024 / 1024 used = m ...

  4. psutil模块安装指南(win与linux)

    1.windows下psutil模块安装: https://pypi.python.org/packages/3.4/p/psutil/ 下载符合版本的软件包下载,然后安装即可. 2.ubuntu下载 ...

  5. 15.python笔记之psutil模块

    一.psutil模块 1. psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...

  6. CentOS7--64安装python的psutil模块

    1.以root身份登陆CentOS依次 执行以下命令: wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.g ...

  7. Python 中psutil 模块的安装

    第一步下载psutil 的安装包 网址:https://pypi.python.org 第二步解压 .tar.gz cd psutil- 第三步安装: python setup.py build py ...

  8. python之psutil模块(获取系统性能数据)

    psutil模块 1.介绍 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...

  9. python之psutil模块(获取系统性能信息(CPU,内存,磁盘,网络)

    一.psutil模块 1. psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...

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

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

随机推荐

  1. 如何修改select标签的默认下拉箭头样式?

    对于一般的项目而言,select标签在浏览器中表现出来的默认样式也不算丑,但是一次项目中,项目经理却要求对select标签本身进行样式修改,美化其下拉小箭头的样式.我思考和尝试了许多方法,最终得到一种 ...

  2. Jmeter脚本录制方法(一)——分别使用Badboy录制和Jmeter自带的代理服务器录制

    Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...

  3. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  4. JAVA提高一:静态导入、可变参数、增强型for循环、装拆箱

    国庆假期已结束,假期8天,全部在家带娃,体会到了妻子的不容易,需要好好努力来多赚钱了,言归正传.10月份开始进去JAVA 高级语法知识学习,本节复习学习的为:静态导入.可变参数.增强型for循环.装拆 ...

  5. Python自学笔记-lambda函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 匿名函数 通过 ...

  6. 阿里云AliYun表格存储(Table Store)相关案例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. C++类中静态变量和静态方法使用介绍

    静态成员的提出是为了解决数据共享的问题.实现共享有许多方法,如:设置全局性的变量或对象是一种方法.但是,全局变量或对象是有局限性的.这一章里,我们主要讲述类的静态成员来实现数据的共享. 静态数据成员 ...

  8. UVW源码漫谈(四)

    十一假期后就有点懒散,好长时间都没想起来写东西了.另外最近在打LOL的S赛.接触LOL时间不长,虽然平时玩的比较少,水平也相当菜,但是像这种大型的赛事有时间还是不会错过的.主要能够感受到选手们对竞技的 ...

  9. JavaBean编辑器的简单介绍

    引言 Sun所指定的JavaBean规范很大程度上是为IDE准备的--它让IDE能够以可视化的方式设置JavaBean的属性.如果在IDE中开发一个可视化的应用程序,则需要通过属性设置的方式对组成应用 ...

  10. 使用VS2013 + EF6 + .NET4.5 连接Mysql数据库

    1.安装插件 在使用Visual Studio 2013添加ADO.NET实体数据模型新建连接时,默认是没有Mysql选项的.此时我们需要安装两个东西: 1.mysql-for-visualstudi ...