psutil模块的使用
psutil介绍
- process and system utilities(进程和系统工具)
- 能够轻松的实现获取系统运行的进程和系统利用率(CPU、内存、磁盘、网络等)信息,主要应用于系统监控。
- 实现了同等命令命令行实现的功能:ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等
- 跨平台:linux、windows、OS X、FreeBSD和Sun Solaris等
- 主要功能包含:CPU、磁盘、内存、网络、进程
psutil安装
源码安装:git clone https://github.com/giampaolo/psutil.git
cd psutil
python3 setup.py install
pip3安装,pip3 install psutil,前提需要安装好python
导入使用模块:import psutil
Python 3.6.8 (default, Aug 7 2019, 17:28:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
CPU
查看cpu的各项参数
cpu(相当于linux命令:top)
psutil.cpu_count(,[logical])#:默认返回逻辑CPU的个数,当设置logical的参数为False时,返回物理CPU的个数
psutil.cpu_percent(,[percpu],[interval])#:返回CPU的利用率,percpu为True时显示所有物理核心的利用率,interval不为0时,则阻塞时显示interval执行的时间内的平均利用率
psutil.cpu_times(,[percpu])#:以命名元组(namedtuple)的形式返回cpu的时间花费,percpu=True表示获取每个CPU的时间花费。
其中:
psutil.cpu_times(,[percpu]).user#:执行用户进程的时间
psutil.cpu_times(,[percpu]).system#:执行内核进程时间
psutil.cpu_times(,[percpu]).idle#:闲置的时间
psutil.cpu_times(,[percpu]).iowait#:等待io操作的时间
psutil.cpu_times(,[percpu]).irp#:硬中断时间
psutil.cpu_times(,[percpu]).softirq#:软中断时间
psutil.cpu_times_percent(,[percpu])#:功能和cpu_times大致相同,返回耗时比例
psutil.cpu_stats()#: 以命名元组的形式返回CPU的统计信息,包括上下文切换,中断,软中断和系统调用次数
其中:
psutil.cpu_stats().ctx_switches#:上下文切换次数
psutil.cpu_stats().interrupts#:中断次数
psutil.cpu_stats().soft_interrupts#:软中断次数
psutil.cpu_stats().syscalls#:系统调用次数,linux上始终为0
psutil.cpu_freq()#: 返回cpu频率
memory(内存)
memory(相当于linux命令:free)
psutil.virtual_memory()#:以命名元组的形式返回内存使用情况,单位为字节
psutil.virtual_memory().total#:总物理内存
psutil.virtual_memory().available#:可用内存,available ~free + buffers + cached
psutil.virtual_memory().percent#:使用率: percent = (total - available) / total * 100
psutil.virtual_memory().used#:使用的内存: used = total - free - buffers - cache
psutil.virtual_memory().free#:完全没用使用内存
psutil.virtual_memory().active#:最近被访问的内存
psutil.virtual_memory().inactive#:长时间未被访问的内存
psutil.virtual_memory().buffers#:缓存
psutil.virtual_memory().cached#:缓存
psutil.virtual_memory().slab#:内核数据结构缓存的内存
psutil.swap_memory()#:以命名元组的形式返回swap/memory使用情况,包含swap中页的换入和换出
disk
disk(linux命令:iostat,df)
psutil.disk_io_counters([perdisk])#:以命名元组的形式返回磁盘io统计信息(汇总的),包括读、写的次数,读、写的字节数等
psutil.disk_partitions()#:磁盘挂载分区信息
device:分区
mountpoint:挂载点
fstype:文件系统格式(fat、ext4、 xfs)
opts:挂载参数
disk_usage#:磁盘使用情况,需要传入一个路径参数
>>> psutil.disk_usage('/')
sdiskusage(total=250685575168, used=103938019328, free=134242258944, percent=43.6)
iostat命令 #: %util 数值越大越忙碌,到达了io瓶颈(安装包:yum install sysstat)
Network
Network(相当于linux命令:ifconfig、who、uptime,netstat)
psutil.net_io_counters([pernic])#:以命名元组的形式返回当前系统中每块网卡的网络io统计信息,包括收发字节数,收发包的数量、出错的情况和删包情况。当pernic为True时,则列出所有网卡的统计信息。
lo :本地回环地址(127.0.0.1)
psutil.net_connections([kind]):以列表的形式返回每个网络连接的详细信息(namedtuple)
fd:文件描述符
family:地址簇,ipv4(AF_INET),ipv6
type:SOCK_STREAM(tcp)、udp
laddr:本地ip地址
raddr
status
pid
psutil.net_if_addrs()#:以字典的形式返回网卡的配置信息,包括IP地址和mac地址、子网掩码和广播地址。
psutil.net_if_stats()#:返回网卡的详细信息,包括是否启动、通信类型、传输速度与mtu
mtu:最大传输单元
psutil.users()#:以命名元组的方式返回当前登陆用户的信息,包括用户名,登陆时间,终端
psutil.boot_time()#:以时间戳的形式返回系统的启动时间
使用time模块来处理时间戳
进程管理
进程管理(linux命令:ps、kill)
psutil.pids()#:以列表的形式返回当前正在运行的进程
psutil.pid_exists(1)#:判断给点定的pid是否存在
psutil.Process(1)#:对进程进行封装,可以使用该类的方法获取进行的详细信息,或者给进程发送信号
psutil.process_iter()#:迭代当前正在运行的进程,返回的是每个进程的Process对象
name:获取进程的名称
cmdline:获取启动进程的命令行参数
create_time:获取进程的创建时间
uids:进程uid信息
num_threads:开启的线程数
exe:进程工作的绝对路径
kill:发送SIGKILL信号结束进程