您的位置:首页 > 运维架构 > Linux

centos 7 下的python psutil模块

2016-07-19 21:23 381 查看
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后还是出现了报错



缺少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的命令细节可以参考

关于free的博客地址

相比较而言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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: