Python自动化运维学习笔记(二)

系统性能信息模块psutil

psutil是一个跨平台库,实现了linux下如ps,top,lsof,netstat,ifconfig,df,free等命令,功能十分强大。

获取CPU信息

linux的CPU信息包括以下几个部分:

  1. us:User Time,执行用户进程的时间百分比
  2. sy:System Time,执行内核进程和中断的时间百分比
  3. ni:niced,运行已调整优先级的用户进程的CPU时间百分比
  4. id:Idle,CPU处于idle状态的时间百分比
  5. wa:Wait IO,由于IO等待而使CPU处于idle状态的时间百分比
  6. hi:hardware irq,处理硬件中断的CPU时间百分比
  7. si:software irq,处理软件中断的CPU时间百分比

使用psutil.cpu_times()方法可以非常容易地获得这些信息,同时也可以获得CPU的硬件相关信息。

>>> import psutil
>>> psutil.cpu_times()
scputimes(user=10795510.2, nice=2541.04, system=1734822.41, idle=37173589.62, iowait=32407.26, irq=0.0, softirq=6520.69, steal=0.0, guest=0.0, guest_nice=0.0)
>>> 
>>> psutil.cpu_count()#获取CPU逻辑个数
4
>>> psutil.cpu_count(logical=False)#获取CPU物理个数
4
>>> 
获取内存信息

linux系统内存信息包括以下几个部分:

  1. total:内存总数
  2. used:已使用的内存数
  3. free:空闲内存数
  4. buffers:缓冲使用数
  5. cache:缓存使用数
  6. swap:交换分区使用数

使用psutil.virtual_memory()以及psutil.swap_memory()方法可以获取到内存信息,psutil模块的内存单位是字节。

>>> psutil.virtual_memory() #获取内存使用信息
svmem(total=8329592832, available=7343640576, percent=11.8, used=578506752, free=1014968320, active=2367078400, inactive=4003315712, buffers=926486528, cached=5809631232, shared=90120192, slab=831270912)
>>> 
>>> psutil.virtual_memory().total #获取总内存数
8329592832
>>> 
>>> psutil.swap_memory() #获取swap使用信息
sswap(total=8553230336, used=1585152, free=8551645184, percent=0.0, sin=57344, sout=5869568)
>>> 
获取磁盘信息

linux系统中的磁盘信息主要包括磁盘利用率和IO信息

  1. read_count:读IO数
  2. write_count:写IO数
  3. read_bytes:IO读字节数
  4. write_bytes:IO写字节数
  5. read_time:磁盘读时间
  6. write_time:磁盘写时间

使用psutil.disk_usage()以及psutil.disk_io_counters()方法可以获取到磁盘利用率以及IO信息

>>> psutil.disk_partitions() #获取完整的磁盘信息
[sdiskpart(device='/dev/mapper/ddf1_4c5349202020202080861d60000000004711471100001450p1', mountpoint='/', fstype='ext4', opts='rw,relatime,errors=remount-ro,data=ordered'), sdiskpart(device='/dev/mapper/ddf1_4c5349202020202080861d60000000004711471100001450p1', mountpoint='/var/lib/docker/aufs', fstype='ext4', opts='rw,relatime,errors=remount-ro,data=ordered')]
>>> 
>>> psutil.disk_usage('/') #获取根分区的使用情况
sdiskusage(total=482612699136, used=33947377664, free=424126337024, percent=7.4)
>>> 
>>> psutil.disk_io_counters() #获取硬盘总的IO个数以及读写信息
sdiskio(read_count=575059, write_count=46108186, read_bytes=27368806400, write_bytes=580886237184, read_time=2335136, write_time=2915821808, read_merged_count=6899, write_merged_count=3261814, busy_time=269195312)
>>> 
>>> psutil.disk_io_counters(perdisk=True) #获取单个分区的IO个数以及读写信息
获取网络信息

linux的网络信息主要包括:

  1. bytes_sent:发送字节数
  2. bytes_recv:接收字节数
  3. packets_sent:发送数据包数
  4. packets_recv:接收数据包数

可以使用psutil.net_io_counters()方法获取

>>> psutil.net_io_counters() #获取网络总的IO信息
snetio(bytes_sent=13203708046, bytes_recv=302698681520, packets_sent=27480093, packets_recv=1890772784, errin=0, errout=0, dropin=18288194, dropout=0)
>>> 
>>> psutil.net_io_counters(pernic=True) #获取每个网络接口的IO信息
获取进程信息

psutil模块在获取进程信息方面也提供了很好的支持,可以使用psutil.pids()方法获取所有进程的pid,使用psutil.Process()方法获取单个进程的名称、路径、状态、系统资源利用率等信息;同时还提供了Popen类来获取用户启动的应用程序进程信息,方便用户跟踪进程的运行状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值