Python psutil模块的使用介绍
psutil是一个Python模块,是一个跨平台库(windows一样好使),用来获取正在运行的进程信息和系统的CPU和内存的利用率。
采集数据非常好用。
1.安装psutil
这里使用pip安装简单
1.1首先安装pip
yum install gcc python-devel python-pip -y
1.2安装psutil
#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逻辑个数
>>> 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()
#总内存大小 --单位都是字节
>>> 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信息
>>> 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)
#获取磁盘IO总个数
>>> 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()方法获取单个进程的名称,路径状态等
#查看系统全部进程
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
- 上一篇:ceph 导出,导入
- 下一篇:Python模块 prettytable