python psutil库的使用示例

 更新时间:2021年03月15日 10:26:23   作者:刀十一  
这篇文章主要介绍了python psutil库的使用示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下

由于Bash实在太恶心,很多运维工程师开始使用Python代替Bash写各种脚本。

虽然理论上可以用Python调用Bash指令实现各种功能,但是给各种命令写Bash wrapper还要解析输出实在太麻烦。所以我们还是希望用原生Python库来实现各种功能。

今天我推荐一个好用的Python库psutil

psutil一个能够跨平台使用的库。可以用来获取系统信息(CPU、内存、磁盘、网络)和进程信息。

它可以被用来替代这些UNIX的系统命令:ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap

下面是一些具体例子:

>>> import psutil # 加载库

CPU信息

CPU占用率

>>> psutil.cpu_percent(interval=5)
12.9

CPU频率

>>> psutil.cpu_freq()
scpufreq(current=2300, min=2300, max=2300)

CPU load

>>> psutil.getloadavg()
(2.21044921875, 2.4814453125, 2.74609375)

内存信息

内存使用状况

>>> psutil.virtual_memory()
svmem(total=8589934592, available=1664913408, percent=80.6, used=5807058944, free=15069184, active=1651421184, inactive=1649065984, wired=4155637760)

磁盘

磁盘分区信息

>>> psutil.disk_partitions()
[sdiskpart(device='/dev/disk1s5', mountpoint='/', fstype='apfs', opts='ro,local,rootfs,dovolfs,journaled,multilabel', maxfile=255, maxpath=1024), ...]

磁盘占用率

>>> psutil.disk_usage('/')
sdiskusage(total=250685575168, used=11233398784, free=14531440640, percent=43.6)

磁盘IO

>>> psutil.disk_io_counters()
sdiskio(read_count=190236826, write_count=110716593, read_bytes=11349786423296, write_bytes=9505852936192, read_time=165443373, write_time=100234117)

网络

网络连接 (netstat)

>>> import psutil
>>> psutil.net_connections()
[pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED', pid=1254),
 pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING', pid=2987),
 pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=60759), raddr=addr(ip='72.14.234.104', port=80), status='ESTABLISHED', pid=None),
 pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=51314), raddr=addr(ip='72.14.234.83', port=443), status='SYN_SENT', pid=None)
 ...]

网络接口(ifconfig)

>>> psutil.net_if_addrs()
{'lo': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],
 'wlan0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
   snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
   snicaddr(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}

其它系统信息

电池

>>> psutil.sensors_battery()
sbattery(percent=93, secsleft=15420, power_plugged=False)

当前用户

>>> psutil.users()
[suser(name='myname', terminal='console', host=None, started=1604809088.0, pid=180), suser(name='yuliji', terminal='ttys012', host=None, started=1615375616.0, pid=13894)]

进程信息

PID

>>> psutil.pids()
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, ..., 32498]

所有进程

>>> for proc in psutil.process_iter(['pid', 'name', 'username']):
...  print(proc.info)
...
{'name': 'systemd', 'pid': 1, 'username': 'root'}
{'name': 'kthreadd', 'pid': 2, 'username': 'root'}
{'name': 'ksoftirqd/0', 'pid': 3, 'username': 'root'}

详细文档,请参考: psutil.readthedocs.io/en/latest/

以上就是python psutil库的使用示例的详细内容,更多关于python psutil库的资料请关注脚本之家其它相关文章!

相关文章

  • 数据驱动测试DDT之Selenium读取Excel文件

    数据驱动测试DDT之Selenium读取Excel文件

    这篇文章主要为大家介绍了数据驱动测试DDT之Selenium读取Excel文件,
    2021-11-11
  • Opencv求取连通区域重心实例

    Opencv求取连通区域重心实例

    这篇文章主要介绍了Opencv求取连通区域重心实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 用python结合jieba和wordcloud实现词云效果

    用python结合jieba和wordcloud实现词云效果

    词云,顾名思义就是很多个单词,然后通过出现的频率或者比重之类的标准汇聚成一个云朵的样子嘛,其实呢现在网上已经有很多能自动生成词云的工具了,比如Wordle,Tagxedo等等,Python也能实现这样的效果,我们通过jieba库和wordcloud库也能十分轻松的完成词云的构建
    2017-09-09
  • 关于python pygame游戏进行声音添加的技巧

    关于python pygame游戏进行声音添加的技巧

    这篇文章主要给大家分享的是pygame游戏进行声音添加的方法,这文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
    2021-10-10
  • Django开发中使用Ueditor上传图片遇到的坑及解决

    Django开发中使用Ueditor上传图片遇到的坑及解决

    在Django开发中使用Ueditor上传图片时,可能会遇到后端配置不正确的问题,建议在实例化Ueditor后加上serverUrl,这可以在Chrome的F12工具中查看请求的后端配置项,此外,如果需要修改上传路径,可以在配置文件中更改路径,并调整view.py中的代码来管理上传文件
    2024-09-09
  • Pytorch框架实现mnist手写库识别(与tensorflow对比)

    Pytorch框架实现mnist手写库识别(与tensorflow对比)

    这篇文章主要介绍了Pytorch框架实现mnist手写库识别(与tensorflow对比),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python学习Turtle库画对称勾股树体会分形惊艳

    Python学习Turtle库画对称勾股树体会分形惊艳

    这篇文章主要为大家介绍了Python学习中如何使用Turtle库画对称勾股树,从而体会到分形世界的惊艳,文中附含详细示例代码有需要的朋友可以借鉴参考下
    2021-09-09
  • Django网络框架之创建虚拟开发环境操作示例

    Django网络框架之创建虚拟开发环境操作示例

    这篇文章主要介绍了Django网络框架之创建虚拟开发环境操作,简单描述了虚拟开发环境的概念、功能,并分析了使用venv与virtualenv安装虚拟环境相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • python实现括号匹配的思路详解

    python实现括号匹配的思路详解

    这篇文章主要介绍了python实现括号匹配及匹配格式的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • 使用Python编写一个简单的tic-tac-toe游戏的教程

    使用Python编写一个简单的tic-tac-toe游戏的教程

    这篇文章主要介绍了使用Python编写一个简单的tic-tac-toe游戏的教程,有利于Python初学者进行上手实践,需要的朋友可以参考下
    2015-04-04

最新评论