官方网址:http://pythonhosted.org/psutil/
一、psutil模块:
psutil是一个跨平台库。能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。
它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统.
二、安装psutil模块:
CentOS安装psutil包
1 2 3 4 5 6 7
| pip3 install psutil
# 或者 wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.1.tar.gz --no-check-certificate tar zxvf psutil-3.2.1.tar.gz cd psutil-3.2.1 python setup.py install
|
Windos安装psutil包
三、获取系统基本信息的使用:
1、CPU信息
使用cpu_times方法获取cpu的完整信息,如下所示。
获取单个数据,如用户的cpu时或io等待时间,如下所示:
1 2
| psutil.cpu_times().user psutil.cpu_times().iowait
|
获取cpu逻辑和物理个数,默认logical值为True 。
1 2 3 4
| psutil.cpu_count()
psutil.cpu_count(logical=False)
|
获取cpu的使用率:
1 2
| psutil.cpu_percent(interval=None, percpu=False) psutil.cpu_percent(interval=None, percpu=True)
|
2、内存信息
内存信息的获取主要使用virtual_memory方法。swap使用就用swap_memory方法。
1 2 3 4 5 6 7 8
| mem = psutil.virtual_memory() print(mem)
print(mem.total) print(mem.used) print(mem.free) print(mem.total/1024/1024)
|
3、磁盘信息
磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。
如下先获取分区信息,然后看下根分区的使用情况:
1 2 3 4
| psutil.disk_partitions()
psutil.disk_usage('/')
|
默认disk_io_counters方法获取的是硬盘总的io数和读写信息,如果需要获取单个分区的io和读写信息加上”perdisk=True”参数。
1 2 3 4
| psutil.disk_io_counters()
psutil.disk_io_counters(perdisk=True)
|
4、网络信息
网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。
1 2 3 4 5 6
| psutil.net_io_counters()
psutil.net_io_counters(pernic=True)
|
5、网卡
1 2 3 4 5 6 7 8 9 10 11
| psutil.net_if_addrs()['ens33'][0].address
psutil.net_if_addrs()['ens33'][0].netmask
psutil.net_if_stats()['ens33'].isup
psutil.net_if_stats()['ens33'].speed
|
6、其他系统信息
1.获取开机时间
1 2 3 4 5 6
| psutil.boot_time()
psutil.boot_time() datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")
|
2.查看系统全部进程
3.查看单个进程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import psutil p = psutil.Process(16031) p.name() p.exe() p.cwd() p.status() p.create_time() p.uids() p.gids() p.cpu_times() p.cpu_affinity() p.memory_percent() p.memory_info() p.io_counters() p.connectios() p.num_threads()
from subprocess import PIPE p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE) p.name() p.username()
|