Python自动化运维笔记(一):系统性能信息模块psutil

运行环境:Python3.6,Windwos10 RS1,Pycharm2017.2


前言

最近开始接触Python自动化运维,网上有不少教学资源可以供我们相对系统地去学习。而我是使用的优秀运维工程师刘天斯所著《Python自动化运维-技术与最佳实践》一书,博文中的大部分笔记也是摘抄自这本书,另外会有自己平时学习的一些总结,写成笔记原因有三:

  • 让自己学会总结,学会去分析问题
  • 加深一下印象,以后遇到类似的问题可以方便回顾,毕竟自己的笔记是最适合自己的
  • 运维初学者,连菜鸟都算不上,但也希望将自己的经验分享给大家

关于系统信息模块psutil

psutil库能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。主要用于系统监控,分析和限制系统资源进程的管理。目前支持32位和64位的LinuxWindowsOSX(现在改名为MacOS,苹果家桌面系统),FreeBSDSunSolaris等操作系统。
现在时间是2017年9月30日,在网上查询到的版本信息,该模块可以支持Python2.4到目前最新的Python3.6版本。
因为现在最常用的Python2.7Python3.6都内置了pip软件管理工具,所以我们可以直接使用以下指令进行安装

pip install psutil      

值得一提的是如果同时安装了Python2Python3,则如果需要安装到Python3上应该执行如下命令:

pip3 install psutil

获取系统信息

Linuxshell中我们通常使用如下指令来获取物理内存total值和物理内存uesed的值:

[root@CentOS ~]# free -m | grep Mem | awk '{print $2,$3}'   #物理内存total值\物理内存uesed值
1006 143

shell
然而在使用psutil库时更加简单明了。

>>> import psutil
>>> mem = psutil.virtual_memory()
>>> mem.total       # 物理内存total值,单位为字节
6336098304
>>> mem.used        # 物理内存uesed值,单位为字节
3943735296
获取CPU信息
psutil.cpu_times()      # 获取CPU相关的完整信息
scputimes(user=21465.578125, system=19666.59375, idle=287203.375, interrupt=910.59375, dpc=436.75000190734863)
psutil.cpu_times().user # 获取单项信息
21475.96875
psutil.cpu_count()      # 获取CPU的逻辑个数,默认参数logical = True
4
psutil.cpu_count(logical = False)   # 获取CPU的物理个数
2
获取内存信息
>>> psutil.virtual_memory()     # 获取内存完整信息
svmem(total=6336098304, available=1639055360, percent=74.1, used=4697042944, free=1639055360)
>>> psutil.swap_memory()        # 获取swap分区相关信息,其实就是相当于我们Windows上说的虚拟内存(个人理解)
sswap(total=7342731264, used=5996646400, free=1346084864, percent=81.7, sin=0, sout=0)
获取其它相关信息
>>> psutil.disk_partitions()        # 获取磁盘完整信息
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='F:\\', mountpoint='F:\\', fstype='', opts='cdrom'), sdiskpart(device='H:\\', mountpoint='H:\\', fstype='', opts='removable')]
# -------------------------------------------------------------
>>> psutil.disk_io_counters()       # 获取磁盘总的IO个数、读写信息
sdiskio(read_count=1416268, write_count=1952341, read_bytes=59678343168, write_bytes=60500517888, read_time=503151605, write_time=1266966502)
# -------------------------------------------------------------
>>> psutil.net_io_counters()        # 获取网络总的IO信息
snetio(bytes_sent=22999076, bytes_recv=853131051, packets_sent=323119, packets_recv=592483, errin=0, errout=0, dropin=0, dropout=0)
# --------------------------------------------------------------
>>> psutil.users()                  # 获取当前用户登录信息
[suser(name='imwoo', terminal=None, host='0.0.0.0', started=1506702487.0, pid=None)]

系统进程管理

通过获取系统进程信息,我们可以得知应用程序运行状态。在psutil模块中,我们可以很方便的通过psutil.pid()来获取进程PID(Progress ID),使用psutil.Process()来获取耽搁进程的相关信息。

>>> import psutil
>>> psutil.pids()   # 获取当前进程的所有PID
[0, 4, 368, 532, 644, 720, 728, 840, 864, 884, 956, 716, 1132, 1180, 1188, 1280, 1344, 1432, 1516, 1548, 1568, 1620, 1696, 1756, 1788, 1812, 1876, 2052, 2060, 2124, 2132, 2140, 2284, 2356, 2376, ......]

针对当前系统某一进程具体分析,写这篇博文我正好在听歌,用的是网易云音乐,在任务管理器中查看了一下进程PID为9340,所以我就直接用这个来进行分析了。

import psutil

progress = psutil.Process(9340)     # 当前我电脑网易云音乐的PID为9340

print('进程名:%s' % progress.name())
print('进程路径:%s' % progress.exe())
print('进程工作绝对路径:%s' % progress.cwd())
print('进程状态:%s' % progress.status())
print('内存利用率:%d' % progress.memory_percent())
print('还有很多相关信息...')

运行结果:

进程名:cloudmusic.exe
进程路径:C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe
进程工作绝对路径:C:\Program Files (x86)\Netease\CloudMusic
进程状态:running
内存利用率:0
还有很多相关信息…

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值