[TOC]

前言

psutil 是一个跨平台库,能够轻松实现获取系统运行的金岑个系统利用率,包括CPU、内存、磁盘、网络等信息,它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、free等

通常我们获取系统信息往往采用编写shell来实现,如获取当前物理内存总大小

[root@192.168.32.130 ~]$ free -m
total used free shared buffers cached
Mem: 981 899 81 15 44 149
-/+ buffers/cache: 705 275
Swap: 1983 999 984
[root@192.168.32.130 ~]$

使用python 的psutil库获取更为方便

那么psutil 是一个第三方模块,需要安装

Windows:

pip3 install psutil

Linux:

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
python3 setup.py install

使用如下:

import psutil                       # 导入psutil模块
mem = psutil.virtual_memory() # 实例化出来mem对象
print(mem) # 查看完整内存信息
print(mem.total) # 查看内存总大小,单位是字节
print(mem.used) # 查看内存使用大小

获取大小之后我们可以使用转换工具进行转换

获取系统性能信息

CPU

Linux 操作系统的CPU 利用率有以下几个部分:

  • User Time:执行用户进程的时间百分比
  • System Time:执行内核进程和中断的时间百分比
  • Wait IO:由于IO等待而使CPU处于idle(空闲)状态的时间百分比
  • Idle: CPU 处于空间状态的时间百分比
print(psutil.cpu_times())           # 获取CPU 完整的信息
print(psutil.cpu_times().user) # 获取用户user的cpu时间比
print(psutil.cpu_count()) # 获取CPU 的逻辑个数
print(psutil.cpu_count(logical=False)) # 获取CPU 的物理个数
print(psutil.cpu_percent()) # 获取cpu的使用率
print(psutil.cpu_percent(1))

内存

Linux 操作系统的内存利用率有以下几个部分:

  • total(内存总数)
  • used(已使用的内存数)
  • free(空闲内存数)
  • buffers(缓冲使用数)
  • cache(缓存使用数)
  • swap(交换分区使用数)
mem = psutil.virtual_memory()       # 实例化出来mem对象
print(mem) # 查看完整内存信息
print(mem.total) # 查看内存总大小
print(mem.used) # 查看内存使用大小

磁盘

在系统磁盘信息中,我们更加关注磁盘利用率即IO 信息。获取磁盘利用率可以用psutil.disk_usage方法获取

print(psutil.disk_partitions())     # 获取磁盘完整信息
print(psutil.disk_usage("/")) # 获取分区的使用参数
print(psutil.disk_io_counters()) # 获取磁盘的读写信息

网络信息

网络信息包括bytes_sent(发送字节数)、接收字节数等

print(psutil.net_io_counters())     # 获取完整的网络信息

其他系统信息

除了以上介绍的几个获取系统基本信息的方法,psutil模块还支持获取用户登录、开机时间等信息

print(psutil.users())               # 获取当前登录系统的用户信息
print(psutil.boot_time()) # 获取开机时间,以时间戳格式返回
import datetime
res = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d" "%H:%M:%S")
print(res) # 格式化为人们看得懂的时间

系统进程管理方法

获取当前系统进程信息,可以让运维人员得知应用程序的运行状态,包括进程的启动时间、查看或设置CPU亲和度、内存使用率、IO信息、socket连接、线程数等,这些信息可以呈现出指定进程是否存活、资源利用情况,为开发人员的代码优化、问题定位提供良好的数据参考

进程信息

psutil 获取进程信息

print(psutil.pids())                # 获取所有进程PID,以列表形式返回
p = psutil.Process(9236) # 实例化一个对象,参数为一个进程ID
print(p.name()) # 通过name属性可以得到这个进程的名称
print(p.exe()) # 通过exe属性可以得到这个进程的路径
print(p.cwd()) # 通过cwd属性可以进入工作目录绝对路径
print(p.status()) # 通过status属性可以看到这个进程的状态
print(p.create_time()) # 通过create_time属性可以看到这个进程的创建时间,时间戳形式
print(p.uids()) # 通过uids属性可以看到进程的uid信息
print(p.gids()) # 通过gids属性可以看到进程的gid信息
print(p.cpu_times()) # 通过cpu_times可以看到user、system两个cpu的时间
print(p.cpu_affinity()) # 获取cpu亲和度,如果要设置亲和度,将cou号作为参数即可。
print(p.memory_percent()) # 通过memory_percent可以看到进程的内存利用率
print(p.memory_info()) # 通过memory_info可以看到进内存的rss、vms信息
print(p.io_counters()) # 通过io_counters可以看到进程的io信息
print(p.connections()) # 通过connections可以看到进程的socket连接数
print(p.num_threads()) # 通过num_threads可以看到进程开启的线程数

popen类

popen的作用是获取用户启动的应用程序进程信息,以便跟踪程序进程的运行状态

from subprocess import PIPE
p = psutil.Popen(["python3 psutil_使用.py"],stdout=PIPE)
print(p.name())
print(p.username())
print(p.cpu_times)

查看系统硬件的小脚本

#!/usr/bin/env python
#coding:utf-8 import psutil
import datetime
import time # 当前时间
now_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
print(now_time) # 查看cpu物理个数的信息
print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False)) #CPU的使用率
cpu = (str(psutil.cpu_percent(1))) + '%'
print(u"cup使用率: %s" % cpu) #查看内存信息,剩余内存.free 总共.total
#round()函数方法为返回浮点数x的四舍五入值。 free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
total = str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2))
memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)
print(u"物理内存: %s G" % total)
print(u"剩余物理内存: %s G" % free)
print(u"物理内存使用率: %s %%" % int(memory * 100))
# 系统启动时间
print(u"系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")) # 系统用户
users_count = len(psutil.users())
#
# >>> for u in psutil.users():
# ... print(u)
# ...
# suser(name='root', terminal='pts/0', host='61.135.18.162', started=1505483904.0)
# suser(name='root', terminal='pts/5', host='61.135.18.162', started=1505469056.0)
# >>> u.name
# 'root'
# >>> u.terminal
# 'pts/5'
# >>> u.host
# '61.135.18.162'
# >>> u.started
# 1505469056.0
# >>> users_list = ",".join([u.name for u in psutil.users()])
print(u"当前有%s个用户,分别是 %s" % (users_count, users_list)) #网卡,可以得到网卡属性,连接数,当前流量等信息
net = psutil.net_io_counters()
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
print(u"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent)) io = psutil.disk_partitions()
# print(io)
# print("io[-1]为",io[-1])
#del io[-1] print('-----------------------------磁盘信息---------------------------------------') print("系统磁盘信息:" + str(io)) for i in io:
o = psutil.disk_usage(i.device)
print("总容量:" + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G")
print("已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G")
print("可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G") print('-----------------------------进程信息-------------------------------------')
# 查看系统全部进程
for pnum in psutil.pids():
p = psutil.Process(pnum)
print(u"进程名 %-20s 内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " \
% (p.name(), p.memory_percent(), p.status(), p.create_time())) 硬件信息脚本

系统性能信息模块psutil的更多相关文章

  1. python之系统性能信息模块psutil

    系统性能信息模块psutil 跨平台库 轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息. 主要用于系统监控,分析和限制系统资源及进程的管理 实现同等命令行工具提供的功能( ...

  2. python自动化运维笔记1 —— 系统性能信息模块psutil

    一.系统基础信息模块 1.1 系统性能信息模块psutil psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率( ...

  3. 系统性能信息模块--psutil

    #安装psutil模块#pip install psutil -i https://pypi.doubanio.com/simple #导入psutil模块import psutilimport da ...

  4. 系统性能信息模块之psutil模块

    一.psutil模块介绍 官方网址:https://pypi.org/ psutil模块安装:https://github.com/giampaolo/psutil/blob/master/INSTA ...

  5. 1.python系统性能信息模块之psutil模块

    Psutil(进程和系统实用程序)是一个跨平台的库,用于在Python中检索有关运行进程和系统资源利用率(CPU,内存,磁盘,网络)的信息.它主要用于系统监视,分析和限制系统资源及运行进程的管理.它实 ...

  6. 系统性能模块psutil

    psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括cpu.内存.磁盘.网络等)信息.它主要用于系统监控,分析和限制系统资源及进程的管理.它实现了同等命令行工具提供的功能,如p ...

  7. 监控系统信息模块psutil

    About psutil (python system and process utilities) is a cross-platform library for retrieving inform ...

  8. Python自动化运维——系统性能信息模块

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:psutil psutil是一个跨平台库,可以很轻松的为我们实现获取系统运行的进程和资源利用率等信息. 功能 ...

  9. python2.7系统性能监控psutil模块

    系统环境:Centos7.4,系统自带python2.7.5 登录psutil官网,下载psutil的tar包:psutil-5.4.6.tar.gz,并使用命名sha256sum和官网的包进行核对, ...

随机推荐

  1. thinkphp 使用函数

    我们往往需要对模板输出变量使用函数,可以使用: 大理石平台支架 {$data.name|md5} 编译后的结果是: <?php echo (md5($data['name'])); ?> ...

  2. 暴力剪枝——cf1181C

    暴力求长度为len时,以i,j为左上角的旗子的数量 不剪枝的话复杂度是n*n*m*n,必定超时 两个可以剪枝的地方:如果格子[i,j]可以作为长度为len的旗子的左上角,那么其必定不可以作为长度> ...

  3. C++——友元函数和友元类

    友元函数:让函数可以访问类的私有属性 #include <iostream> using namespace std; class A { public: friend class B;/ ...

  4. 浅谈简单实现file控件的图片预览,裁剪和上传。

    1.图片预览之FileReader对象    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...

  5. 软件-开发工具:Gradle

    ylbtech-软件-开发工具:Gradle Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明 ...

  6. Laravel依赖

    首先有个接口 interface Visit { public function go (); } 然后有三个类Leg,Car,Train class Leg implements Visit { p ...

  7. 第四篇:java读取Excel简单模板

    场景:对于经常需要导入Excel模板或数据来解析后加以应用的,使用频率非常之高,做了一个比较稳定的版本,体现在这些地方工具:org.apache.poi使用前必须了解这些:1.要解析,那肯定先判断是不 ...

  8. pycharm新建ini文件或创建ini文件失败

    1.pycharm创建ini格式的文件,没有对应的 ini 文件类型-------需要更新 Ini 2.setting–>marketplace 搜索 Ini ,然后进行安装,重启pycharm ...

  9. 滑雪 矩阵中的最长上升路径 /// 记忆化DFS || DP oj22919

    大致题意: Description 难怪Michael喜欢滑雪,因为滑雪确实很刺激.为了获得加速度,滑雪道必须向下倾斜,而且当滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在一 ...

  10. css 图片高度自适应

    开始采用js,获取屏幕宽度,按宽高比来设置图片大小. var wid = window.screen.width; wid = wid * 0.85; $('.Img').css('width',wi ...