psutil模块基础学习

平时的运维中,我需要查看cpu的使用率,还有逻辑个数,物理个数,还有内存,磁盘,进程等,这里我使用psutil模块来做一个信息查看的学习

1-CPU相关的

cpu使用率:

>>> psutil.cpu_percent()

0.8

当前使用率是0.8%,这个0.8是用户空间使用cpu时间比加上系统内核空间使用cpu时间比还有其他的硬中断软中断等

查看cpu详细使用情况:

>>> psutil.cpu_times_percent()

scputimes(user=0.1, nice=0.0, system=0.4, idle=99.5, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)

>>> psutil.cpu_times_percent().user #单独查看用户空间cpu使用时间比

0.2

>>> psutil.cpu_times_percent().system #单独查看内核空间cpu使用时间比

0.6

>>>

cpu逻辑个数(核数):

>>> psutil.cpu_count()

1

cpu物理个数:

>>> psutil.cpu_count(logical=False)

1

当然cpu还有很多信息可以让我们利于观察系统资源使用情况,我这里就看着三个就够了.

2-内存相关的

查看内存信息:

>>> psutil.virtual_memory()

svmem(total=1025363968, available=702746624, percent=31.5, used=162177024, free=140103680, active=375029760, inactive=331767808, buffers=1777664, cached=721305600, shared=6959104)

查看物理内存总量信息:

>>> psutil.virtual_memory().used

162177024

>>> psutil.virtual_memory().total

1025363968

查看用户使用内存信息:

>>> psutil.virtual_memory().used

162177024

查看空闲内存信息:

>>> psutil.virtual_memory().free

140103680

查看交换分区信息(虚拟内存):

>>> psutil.swap_memory()

sswap(total=2147479552, used=40960, free=2147438592, percent=0.0, sin=0, sout=40960)

例子1:

>>> print("""当前系统内存为%sM,用户使用为%sM,空闲为%sM""" %(int(psutil.virtual_memory().total/1024/1024),int(psutil.virtual_memory().used/1024/1024),int(psutil.virtual_memory().free/1024/1024)))

当前系统内存为977M,用户使用为153M,空闲为134M

3-磁盘相关的

查看磁盘分区情况:

>>> psutil.disk_partitions()

[sdiskpart(device=‘/dev/mapper/centos-root‘, mountpoint=‘/‘, fstype=‘xfs‘, opts=‘rw,seclabel,relatime,attr2,inode64,noquota‘), sdiskpart(device=‘/dev/sda1‘, mountpoint=‘/boot‘, fstype=‘xfs‘, opts=‘rw,seclabel,relatime,attr2,inode64,noquota‘)]

这里注意,结果是以列表的形式显示了当前系统磁盘分区的,每一个分区为一个列表元素

查看分区使用情况:

>>> psutil.disk_usage(‘/‘)

sdiskusage(total=18746441728, used=1604726784, free=17141714944, percent=8.6)

>>> print("当前系统磁盘为%sG" % int(psutil.disk_usage(‘/‘).total/1024/1024/1024))

当前系统磁盘为17G

>>> print("当前磁盘使用率为%.2f%%" % psutil.disk_usage(‘/‘).percent)

当前磁盘使用率为8.60%

注意:输出%要注意格式

4-其他相关的

系统启动时间:

当前系统登录用户:

>>> psutil.users()

[suser(name=‘root‘, terminal=‘pts/0‘, host=‘root‘, started=1510173184.0, pid=34890), suser(name=‘root‘, terminal=‘pts/1‘, host=‘root‘, started=1510174976.0, pid=35059), suser(name=‘root‘, terminal=‘pts/2‘, host=‘root‘, started=1510164736.0, pid=34432), suser(name=‘root‘, terminal=‘pts/3‘, host=‘root‘, started=1510174976.0, pid=35078)]

这里显示的当前有四个用户登录到系统

查看进程PID:

>>> psutil.pids()

[1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 9..............35102, 35103]

所有的pid都会显示在列表中,通过这些pid,我们还可以查看进程的名称,进程的用户等

>>> psutil.Process(1).name() #查看进程名称

‘systemd‘

注意,这里的Process是P大写字母

>>> psutil.Process(1).username() #查看进程用户名

‘root‘

注意,这里的Process是P大写字母

>>> psutil.Process(1).cmdline() #查看进程路径

[‘/usr/lib/systemd/systemd‘, ‘--system‘, ‘--deserialize‘, ‘21‘]

>>> psutil.Process(1).status() #查看进程状态

‘sleeping‘

>>> psutil.Process(244).suspend() #挂起进程

>>> psutil.Process(244).kill() #杀死进程

下面我写一个检查python进程是否存在,如果存在就返回进程的pid

[[email protected] home]# vi 2.py

import psutil

for ppid in psutil.pids():

if psutil.Process(ppid).name() == ‘python‘:

print("Python程序已经开启,进程pid为:%s" % ppid)

[[email protected] home]# python 2.py

Python程序已经开启,进程pid为:34512

Python程序已经开启,进程pid为:35093

Python程序已经开启,进程pid为:35169

psutil的简单学习,就到这里,还有很多都没有学到,有时间再学了.

PS:个人之见,如果有错误的地方,欢迎大家指正

时间: 2024-07-31 13:02:14

psutil模块基础学习的相关文章

cookielib模块基础学习

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import cookielib #主要用于处理http客户端的cookie #cookielib.loadError在一个异常文件中失败加载,是IOEerror的子类 #cookielib.CookieJar用于存储cookie对象,此模块捕获cookie并在后续连接请教时重新发送,还可以用来处理包含cookie数据文件 #文档:https://docs.pyth

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

python之psutil模块

系统基础信息模块 Psutil模块https://pypi.python.org/pypi/psutil/ 系统性能部分 1.CPU info Psutil.cpu_times()  #获取cpu完整信息 注:版本不一样显示的内容就不一样 包括:user #用户所占cpu时间 system #系统所占cpu时间 idle #cpu空闲时间 interrupt #可中断睡眠时间 dpc # Psutil.cpu_count() #获取cpu逻辑个数 ===〉logical = False 获取cp

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

Node.js系列基础学习----安装,实现Hello World, REPL

Node.js基础学习 1:简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好 2:安装 à安装node.js 在官网安装自己win版本的node.js的版本,下载,安装完毕后在运行中输入node -v若是出现版本号就证明安装成功. à安装n

Yaf零基础学习总结3-Hello Yaf

Yaf零基础学习总结3-Hello Yaf 上一次我们已经学习了如何安装yaf了,准备工作做好了之后我们来开始实际的编码了,码农都知道一个经典的语句就是“Hello World”了,今天我们开始入手Yaf,目标只要能得到“Hello Yaf”就可以了,不多说,下面开始了.(注:需要读者有一定的MVC知识基础,最好用过一些其他简单的框架) 1.组织目录结构 对于使用过框架的来说这点很好理解,对于没使用过框架的来说建议先别在这死磕,先记着吧,简单点就是对于我们的文件结构做一些规定,让自己和别人都能看

[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图

关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境:Ubuntu 14.04 64位,Eclipse + CDT + ADT+NDK 博主曾经自己使用NDK编译出了libSDL2.so,然后使用共享库的方式来调用libSDL2中的函数,结果发现SDL\src\core\android\SDL_android.c 这个jni函数写的实在是不够自己另外做

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. Razor在减少代码冗余.增强代码可读性和Visual Studio智能感知方面,都有着突出的优势.Razor一经推出就深受广大ASP.Net开发者的喜爱. 1.2 Razor的语法 (1)Razor文件类型:Razor支持两种文件类型,分

python基础学习05(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #dict{键:值} #哈希 #注:字典是无顺序的,所以你懂的 #创建与赋值 dict1={} dict2={'name':'apply','avg':24,'sex':'man'} print dict1,dict2