红联Linux门户
Linux帮助

centos 7下的python psutil模块

发布时间:2016-10-20 10:15:51来源:linux网站作者:遥不可及梦
psutil(process and system utilities)
我的Python版本是2.7.5
python中的psutil模块是系统性能信息模块。
 
接下来我来介绍如何在centos7下源码安装psutil
wget http://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz
tar -xzvf psutil-2.0.0.tar.gz
cd psutil-2.0.0
python setup.py install
由于我的centos7是刚刚安装的没有安装gcc导致了报错
yum install gcc
但是安装完gcc后还是出现了报错
centos 7下的python psutil模块
缺少python-dev的依赖环境
yum -y install python-devel.x86_64
 
经过一番折腾终于安装完了psutil模块
那么我们为什么要安装这个模块呢
对于系统性能信息我们完全可以用shell中的诸多命令(但是学习成本有点高)
例如获取当前物理内存的总大小和使用大小
shell命令
free -m | grep Mem | awk '{print $2}'
free -m | grep Mem | awk '{print $3}'
关于free的命令细节可以参考
http://www.linuxdiyf.com/linux/8233.html
相比较而言psutil库的就比较简单
import psutil
mem = psutil.virtual_memory()
mem.total, mem.used
 
系统性能信息
系统性能的基本信息包括cpu、内存、磁盘、网络
 
CPU信息
Linux操作系统的CPU利用率有:
User Time,执行用户进程的时间百分比;
System Time,执行内核进程及中断的时间百分比
Wait IO, 由于IO等待使得CPU处于idle(空闲)状态的时间百分比
Idle,CPU处于idle的时间百分比
psutil.cpu_times() ##总信息
psutil.cpu_times().user ##单独的信息
psutil.cpu_times().system
 
内存信息
linux系统内存利用率信息涉及total(内存总数)、used(已使用的内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)
psutil.virtual_memory()获取完整的内存信息
psutil.swap_memory()获取交换分区的信息
 
磁盘信息
关注磁盘的利用率和io信息
磁盘的利用率psutil.disk_usage()函数的参数是路径
磁盘IO信息包括read_count(读IO数)、write_count(写IO数)、read_bytes(IO读字节数)、write_bytes(写IO字节数)、read_time(磁盘读取时间)、write_time(磁盘写时间)
IO信息用psutil.disk_io_counters()
psutil.disk_partitions()获取磁盘完整信息
 
网络信息
bytes_send(发送字节数)、bytes_recv(接收字节数)、packets_send(发送数据包数)、packets_recv(接收数据包数)
psutil.net_io_counters()获取网络信息 默认pernic=False
psutil.net_io_counters(pernic=True)输出每个网络接口的信息
 
其他系统信息
获取用户登录psutil.users()
获取开机时间psutil.boot_time() 返回的是时间戳
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d%H:%M:%S")
 
系统进程管理方法
进程信息
psutil.pids()获取所有的进程PID
psutil.Process()获取单个进程的名称、路径、状态、系统资源利用率
`p = psutil.Process(进程号)
p.name() 进程名
p.exe() 进程bin路径
p.cwd() 进程工作目录绝对路径
p.status() 进程状态
p.create_time() 进程创建时间
p.uids() 进程uid信息
p.gids() 进程gid信息
p.cpu_time() 进程CPU时间信息包括user system两个CPU时间
p.cpu_affinity 进程CPU亲和度
p.memory_percent() 进程内存利用率
p.memory_info() 进程内存rss、vms信息
p.io_counters() 进程IO信息
p.connections() 返回打开进程socket的namedutples列表包括fs,family、laddr信息
p.num_threads() 进程开启的线程数
 
popen类
popen类的作用是获取用户启动的应用程序进程信息,以便跟踪程序进程的运行状态。
from subprocess import PIPE
p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout = PIPE)
p.name()
p.username()
p.communicate()
p.cpu_times()
 
psutil的github:https://github.com/giampaolo/psutil
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25206.html