python psutil模块_Python psutil模块的使用介绍

Python psutil模块的使用介绍

https://www.cndba.cn/Expect-le/article/390

psutil是一个Python模块,是一个跨平台库(windows一样好使),用来获取正在运行的进程信息和系统的CPU和内存的利用率。

采集数据非常好用。

https://www.cndba.cn/Expect-le/article/390

1.安装psutil

这里使用pip安装简单https://www.cndba.cn/Expect-le/article/390

1.1首先安装pip

yum install gcc python-devel python-pip -y

1.2安装psutilhttps://www.cndba.cn/Expect-le/article/390

#Linux下

[root@ceph-osd1 ~]# pip install psutil

Collecting psutil

Using cached psutil-5.0.0.zip

Installing collected packages: psutil

Running setup.py install for psutil ... done

Successfully installed psutil-5.0.0

#Windows下

C:/Python27/python.exe -m pip install psutil

2.使用实例

2.1查看CPU具体信息

>>> import psutil

>>> psutil.cpu_times()

scputimes(user=16945.78, nice=8.31, system=12286.74, idle=525633.11, iowait=2711.71, irq=0.0, softirq=3427.71, steal=0.0, guest=0.0, guest_nice=0.0)

#获取cpu逻辑个数https://www.cndba.cn/Expect-le/article/390

>>> psutil.cpu_count()

1

#获取cpu物理个数

>>> psutil.cpu_count(logical=False)

1

2.2读取内存信息

linux系统内存利用率信息涉及to-tal(内存总数),used(以使用内存),free(空闲内存),buffers(缓冲使用数)

cache(缓存使用数),swap(交换分区使用数),分别使用psutil.virtual_memory()与psuti.swap_memory()方法获取

>>> mem = psutil.virtual_memory()

#总内存大小 --单位都是字节

https://www.cndba.cn/Expect-le/article/390

>>> mem.total

1041264640

>>> mem.free

159834112

#获取swap信息

>>> psutil.swap_memory()

sswap(total=2147479552, used=22384640, free=2125094912, percent=1.0, sin=3399680, sout=24952832)

2.3读取磁盘参数

磁盘利用率使用psutil.disk_usage方法获取,磁盘IO信息包括read_count(读IO数),write_count(写IO数)

read_bytes(IO写字节数),read_time(磁盘读时间),write_time(磁盘写时间)

#获取IO信息https://www.cndba.cn/Expect-le/article/390

>>> psutil.disk_io_counters()

sdiskio(read_count=126414, write_count=5959605, read_bytes=43564289024, write_bytes=185718603264, read_time=2909894, write_time=23657996, read_merged_count=747, write_merged_count=1044596, busy_time=16106728)

#获取磁盘完整信息

>>> psutil.disk_partitions()

[sdiskpart(device='/dev/mapper/centos-root', mountpoint='/', fstype='xfs', opts='rw,relatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='xfs', opts='rw,relatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sdc1', mountpoint='/var/lib/ceph/osd/ceph-1', fstype='xfs', opts='rw,noatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sdb1', mountpoint='/var/lib/ceph/osd/ceph-0', fstype='xfs', opts='rw,noatime,attr2,inode64,noquota'), sdiskpart(device='/dev/sdd1', mountpoint='/var/lib/ceph/osd/ceph-2', fstype='xfs', opts='rw,noatime,attr2,inode64,noquota')]

#获取分区表信息

>>> psutil.disk_usage('/')--#获取/分区的状态

sdiskusage(total=50940104704, used=2693271552, free=48246833152, percent=5.3)

>>> psutil.disk_io_counters()

sdiskio(read_count=126568, write_count=5960229, read_bytes=43572325376, write_bytes=185722119680, read_time=2911178, write_time=23659285, read_merged_count=747, write_merged_count=1044728, busy_time=16107656)

#获取单个分区IO个数

>>> psutil.disk_io_counters(perdisk=True)

2.4获取网络信息

网络信息与磁盘IO信息类似,包括byes_sent(发送字节数),byte_recv=xxx(接受字节数),

pack-ets_sent=xxx(发送字节数),pack-ets_recv=xxx(接收数据包数)

#获取网络总IO信息

>>> psutil.net_io_counters()

snetio(bytes_sent=38754579048, bytes_recv=13648108385, packets_sent=91331284, packets_recv=80897156, errin=0, errout=0, dropin=709, dropout=0

#获取网络每个接口的信息

>>> psutil.net_io_counters(pernic=True)  --pernic=True输出网络每个接口信息

{'lo': snetio(bytes_sent=3737111141, bytes_recv=3737111141, packets_sent=21164281, packets_recv=21164281, errin=0, errout=0, dropin=0, dropout=0), 'enp0s3': snetio(bytes_sent=35018910318, bytes_recv=9911742478, packets_sent=70172206, packets_recv=59737784, errin=0, errout=0, dropin=709, dropout=0)}

2.5获取当前系统用户登录信息

>>> psutil.users()

[suser(name='root', terminal='pts/0', host='192.168.1.26', started=1479864320.0), suser(name='root', terminal='pts/1', host='192.168.1.26', started=1479864576.0)]

#查看所有用户

>>> users_count = len(psutil.users())

>>> users_list = ",".join([ u.name for u in psutil.users()])

>>> print u"当前有%s个用户,分别是%s"%(users_count, users_list)

当前有3个用户,分别是root,root,root

2.6获取开机时间

>>> import psutil, datetime

>>> psutil.boot_time()  --#以linux时间格式返回

1479292540.0

>>> datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")  --转换成自然时间格式

'2016-11-16 05: 35: 40'

2.7系统进程管理

获取当前系统的进程信息,获取当前应用程序的运行状态,包括进程的启动时间,查看设置CPU亲和度,内存使用率,IO信息

socket连接,线程数等

#获取进程信息

psutil模块在获取进程方面有很好的支持,使用psutil.pids()方法获取所有进程的PID,使用psutil.Process()方法获取单个进程的名称,路径状态等

https://www.cndba.cn/Expect-le/article/390

#查看系统全部进程

psutil.pids()

[1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 26, 27, 28, 29, 30, 31, 39, 41, 42, 43, 63, 94, 258, 261, 263, 264, 265, 266, 267, 269, 270, 271, 272, 274, 276, 277, 367, 368, 379, 380, 393, 394, 395, 396, 397, 398, 399, 470, 489, 495, 594, 595, 596, 597, 598, 609, 642, 643, 645, 669, 682, 684, 705, 706, 739, 740, 741, 742, 743, 944, 945, 1064, 1481, 2272, 2273, 2274, 2275, 2276, 2435, 2461, 2586, 2587, 2588, 2589, 2592, 4053, 4055, 4056, 5516, 9219, 9980, 11994, 11996, 13546, 13550, 14095, 14926, 14928, 20049, 20159, 25286, 27880, 29360, 32077, 32097]

查看单个进程

>>> p = psutil.Process(4053)

>>> p.name()   #进程名

'ceph-osd'

>>> p.exe()    #进程的bin路径

'/usr/bin/ceph-osd'

>>> p.cwd()    #进程的工作目录绝对路径

'/'

>>> p.status()   #进程状态

'sleeping'

>>> p.create_time()  #进程创建时间

1479299324.06

>>> p.uids()    #进程uid信息

puids(real=167, effective=167, saved=167)

>>> p.gids()    #进程的gid信息

pgids(real=167, effective=167, saved=167)

>>> p.cpu_times()   #进程的cpu时间信息,包括user,system两个cpu信息

pcputimes(user=727.33, system=2196.36, children_user=0.02, children_system=0.03)

>>> p.cpu_affinity()  #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好

[0]

>>> p.memory_percent()  #进程内存利用率

7.968058533131404

>>> p.memory_info()    #进程内存rss,vms信息

pmem(rss=82968576, vms=1063407616, shared=2506752, text=14237696, lib=0, data=919998464, dirty=0)

>>> p.io_counters()    #进程的IO信息,包括读写IO数字及参数

pio(read_count=367633, write_count=92582, read_bytes=326133248, write_bytes=1401589760)

>>> p.connections()   #返回进程列表

[pconn(fd=87, family=2, type=1, laddr=('192.168.1.141', 59887), raddr=('192.168.1.142', 6803), status='ESTABLISHED'), pconn(fd=5, family=2, type=1, laddr=('0.0.0.0', 6809), raddr=(), status='LISTEN'), pconn(fd=46, family=2, type=1, laddr=('192.168.1.141', 6812), raddr=('192.168.1.143', 57543), status='ESTABLISHED')]

>>> p.num_threads()  #进程开启的线程数

156

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python psutil

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值