初探psutil

 系统性能信息模块psutil

1,psutil简介

psutil是一个跨平台能够轻松获取系统的进程和系统利用率,主要应用在系统监控,分析和限制系统资源以及进程管理。它实现了很多系统管理的命令,如ps,lsof,netstat,who,free,uptime,tty.......,能够很方便的为我们管理系统。

2,psutil安装

1 #wget https://pypi.python.org/pypi/psutil/版本
2 
3 #解压
4 
5 #cd 切换到目录
6 
7 #python setup.py  install


3,psutil获取系统性能信息

3.1,获取cpu信息

user time  执行用户进程的时间百分比:

system time 执行内核进程和中断的时间百分比;

wait IO

Idle  cpu处于空闲状态的时间百分比

 常用方法:

 1 import psutil
 2 
 3 psutil.cpu_times()   #使用该方法获取完整cpu信息,需要显示所有逻辑cpu信息。
 4 
 5 psutil.cpu_times(percpu=True)   #指定方法变量
 6 
 7 psutil.cpu_times().user  #获取单项数据信息
 8 
 9 psutil.cpu_count()# 获取cpu逻辑个数
10 
11 psutil.cpu_count(logical=False)  #获取cpu的物理个数

3.2获取磁盘信息

在系统管理中我们,我们对于磁盘信息更加关注磁盘利用率,以及IO信息

常用方法如下:

1 psutil.disk_partitions()  #获取磁盘完整信息
2 
3 psutil.disk_usage   #获取磁盘利用率,分区使用情况
4 
5 psutil.disk_io_counters()   #获取磁盘总的IO个数
6 
7 psutil.disk_io_counters(perdisk=True)   #获取单个分区IO个数

 3.3,获取网络信息

1 其中主要包含几点bytes_sent(发送字节数),bytes_recv,packets_sent(发送数据包数),packets_recv等
2 
3 如下常用方法
4 
5 psutil.net_io_counters()   #获取总的网络IO数默认为pernic=False
6 
7 psutil.net_io_counters(pernic=True)  #输出每个网络接口IO信息  

3.4,内存信息

内存信息我们主要关注,total,used,free,buffers,cache,swap,

如下常用的;

1 mem=psutil.virtual_memory()    #获取内存完整信息
2 
3 psutil.swap_memory()    #获取swap分区信息
4 
5 men.total
6 
7 mem.free  .......

3.5,关于其他的一些信息

如还支持获取用户登陆,开机时间等等信息

如下

psutil.users()    #获取当前系统的用户信息

。。。。。

4,获取进程信息

 1 psutil.pids()  #获取所有进程PID
 2 
 3 psutil.Process()  #获取单个进程的名称,路径,状态,系统资源利用率等信息
 4 
 5 首先实例化
 6 
 7 p=psutil.Process(2424) 
 8 
 9 p.name()    #进程名
10 
11 p.exe()    #进程bin的路径
12 
13 p.cwd()    #进程工作目录绝对路径
14 
15 p.status()    #进程状态
16 
17 p.uids()/gids()    #获取进程的uid,gid
18 
19 p.cpu_times()    #进程cpu的时间信息
20 
21 p.memory_percent()   #进程内存利用率
22 
23 p.memory_info()    #进程内存rss,vms信息
24 
25 p.num_threads()   #进程开启的线程数
26 
27 p.io_counters()    #进程IO信息,包括读写IO数以及字节数

 

5,popen的简单使用

如下

 1 import psutil
 2 
 3 from subprocess import PIPE
 4 
 5 p = psutil.Popen(['/usr/bin/python','-c','print('hello')'],stdout=PIPE)   #通过该方法Popen启动程序,可以跟踪程序运行的所有相关信息
 6 
 7 例如
 8 
 9 p.name()  
10 
11 p.username()
12 
13 p.communicate()  #输出的结果

 

..............更多,如上边。。。。

 

posted @ 2016-02-23 21:27  Dicky_Zhang  阅读(380)  评论(0编辑  收藏  举报