python笔记:常用第三方模块—psutil

目录

一、安装psutil

二、使用psutil

2.1获取CPU相关信息

2.1.1获取cpu信息

2.1.2统计CPU的用户/系统/空闲时间

2.1.3实现类似top命令的CPU使用率

2.2获取内存相关信息

2.2.1使用psutil获取物理内存和交换内存信息

         2.3获取磁盘信息

         2.3.1获取网络读写字节/包的个数

扫描二维码关注公众号,回复: 2306981 查看本文章

         2.3.2获取网络接口信息

         2.3.3获取网络接口状态

         2.3.4获取当前网络连接信息

2.3.5获取进程信息


用Python来编写脚本简化日常的运维工作是Python的一个重要用途,在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如pstopfree等等。我们不选择subprocess模块调用并获取结果,这样太麻烦,在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil = process and system utilities(流程和系统实用程序),它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

一、安装psutil

如果安装了Anaconda,psutil就已经可用了。否则,需要在命令行下通过pip安装:

$ pip install psutil

如果遇到Permission denied安装失败,请加上sudo重试。

二、使用psutil

2.1获取CPU相关信息

2.1.1获取cpu信息

2.1.2统计CPU的用户/系统/空闲时间

2.1.3实现类似top命令的CPU使用率

实现类似top命令的CPU使用率,每秒刷新一次,累计10次:

2.2获取内存相关信息

2.2.1使用psutil获取物理内存和交换内存信息

使用psutil获取物理内存和交换内存信息,分别使用:

返回的是字节为单位的整数,可以看到,总内存大小是total=4213456896 = 4 GB,已用used=3583046208 = 3.4 GB,使用了85%。而交换区大小是12534956032 = 11.6740875。

2.3获取磁盘信息

psutil可以获取网络接口和网络连接信息

2.3.1获取网络读写字节/包的个数

2.3.2获取网络接口信息

2.3.3获取网络接口状态

2.3.4获取当前网络连接信息

2.3.5获取进程信息

代码:

>>> psutil.pids() # 所有进程ID
[3865, 3864, 3863, 3856, 3855, 3853, 3776, ..., 45, 44, 1, 0]
>>> p = psutil.Process(3776) # 获取指定进程ID=3776,其实就是当前Python交互环境
>>> p.name() # 进程名称
'python3.6'
>>> p.exe() # 进程exe路径
'/Users/michael/anaconda3/bin/python3.6'
>>> p.cwd() # 进程工作目录
'/Users/michael'
>>> p.cmdline() # 进程启动的命令行
['python3']
>>> p.ppid() # 父进程ID
3765
>>> p.parent() # 父进程
<psutil.Process(pid=3765, name='bash') at 4503144040>
>>> p.children() # 子进程列表
[]
>>> p.status() # 进程状态
'running'
>>> p.username() # 进程用户名
'michael'
>>> p.create_time() # 进程创建时间
1511052731.120333
>>> p.terminal() # 进程终端
'/dev/ttys002'
>>> p.cpu_times() # 进程使用的CPU时间
pcputimes(user=0.081150144, system=0.053269812, children_user=0.0, children_system=0.0)
>>> p.memory_info() # 进程使用的内存
pmem(rss=8310784, vms=2481725440, pfaults=3207, pageins=18)
>>> p.open_files() # 进程打开的文件
[]
>>> p.connections() # 进程相关网络连接
[]
>>> p.num_threads() # 进程的线程数量
1
>>> p.threads() # 所有线程信息
[pthread(id=1, user_time=0.090318, system_time=0.062736)]
>>> p.environ() # 进程环境变量
{'SHELL': '/bin/bash', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:...', 'PWD': '/Users/michael', 'LANG': 'zh_CN.UTF-8', ...}
>>> p.terminate() # 结束进程
Terminated: 15 <-- 自己把自己结束了

本机上运行: 

 

 

猜你喜欢

转载自blog.csdn.net/zyckhuntoria/article/details/81133176