基于python调用psutil模块过程解析

作者:白马酒凉 时间:2022-04-09 18:22:56 

这篇文章主要介绍了基于python调用psutils模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。

在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

代码如下

oshelper.py


#encoding=utf-8
import psutil
import datetime

#查看cpu的信息
print u"CPU 个数 %s"%psutil.cpu_count()
print u"物理CPU个数 %s"%psutil.cpu_count(logical=False)
print u"CPU uptimes"
print psutil.cpu_times()
print ""

#查看内存信息
mem = psutil.virtual_memory()
print u"系统总内存 %s G"%(mem.total/1024/1024/1024)
print u"系统可用内存 %s G"%(mem.available/1024/1024/1024)
mem_rate = int(mem.available)/float(mem.total)
print u"系统内存使用率 %s %%"%int(mem_rate*100)

#交换分区
swapmem = psutil.swap_memory()
print u"交换分区 %s G"%(swapmem.total/1024/1024/1024)
print u"交换分区可用 %s G"%(swapmem.free/1024/1024/1024)
print u"交换分区使用率 %s %%"%int(swapmem.percent)
#系统启动时间
print u"系统启动时间 %s"%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")

#系统用户
users_count = len(psutil.users())
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)
nis=psutil.net_io_counters(pernic=True)
print u"网卡 " ,tuple(nis)

#进程 进程的各种详细参数
def show_process(pid):
 try:
   p = psutil.Process(pid)

p.name()  #进程名
   #p.exe()  #进程的bin路径
   #p.cwd()  #进程的工作目录绝对路径
   p.status()  #进程状态
   p.create_time() #进程创建时间
   #p.uids()  #进程uid信息
   #p.gids()  #进程的gid信息
   p.cpu_times()  #进程的cpu时间信息,包括user,system两个cpu信息
   #p.cpu_affinity() #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
   p.memory_percent() #进程内存利用率
   p.memory_info()  #进程内存rss,vms信息
   p.io_counters()  #进程的IO信息,包括读写IO数字及参数
   #p.connectios()  #返回进程列表
   p.num_threads() #进程开启的线程数
   '''
   听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息
   from subprocess import PIPE
   p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
   '''
   p.name()
   #p.username()
 except:
   pass
'''
pids=psutil.pids()
for pid in pids:
 show_process(pid)
'''
with open (r'd:\temp\test.txt','w') as f:
 sys.stdout=f
 for proc in psutil.process_iter():
 '''
   if proc.name() == "w3wp.exe":
     cpu_threshold=proc.cpu_percent(interval=2)/24
     print proc.name(),proc.create_time(),cpu_threshold
     p.terminate() proc .kill()
     Iterate over all ports this process is listening to
   for con in proc.get_connections():
     con
 '''
   pa=proc.as_dict()
   print pa.get('name'),pa.get('create_time'),pa.get('pid'),pa.get('status'),pa.get('connections'),pa.get('open_files'),pa.get('cpu_percent'),pa.get('memory_percent'),pa.get('username'),pa.get('num_threads')

print u"当前进程:",psutil.Process(os.getpid()).cmdline()

#磁盘 磁盘的使用量等等
dps=psutil.disk_partitions()
for dp in dps:
 dp
du=psutil.disk_usage('/')
print u"硬盘总共容量 %s G"%(du.total/1024/1024/1024)
print u"硬盘可用 %s G"%(du.free/1024/1024/1024)
print u"硬盘已用 %s %%"%(du.percent)

来源:https://www.cnblogs.com/sui84/p/8251910.html

标签:python,调用,psutil,模块
0
投稿

猜你喜欢

  • 使用Python中的greenlet包实现并发编程的入门教程

    2023-10-18 08:29:00
  • Python去除列表中重复元素的方法

    2021-06-23 20:44:27
  • Python爬取OPGG上英雄联盟英雄胜率及选取率信息的操作

    2023-12-01 07:06:05
  • python3 线性回归验证方法

    2022-12-03 10:49:09
  • python实现txt文件格式转换为arff格式

    2022-05-11 16:06:06
  • 三个520专属Python表白代码分享

    2023-09-19 21:20:06
  • Linux操作系统中如何安装MySQL数据库

    2007-10-26 15:58:00
  • 学习ASP.NET八天入门:第六天

    2007-08-07 13:48:00
  • php生成curl命令行的方法

    2023-07-23 22:19:42
  • MySQL数据库的其它安全问题

    2008-12-23 15:40:00
  • ORACLE LATERAL-SQL-INJECTION 个人见解

    2009-03-04 10:34:00
  • PyTorch模型保存与加载实例详解

    2022-02-24 20:08:56
  • python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案

    2021-10-02 12:40:16
  • 桌面中心(二)数据库写入

    2023-11-18 12:26:15
  • python实现自动重启本程序的方法

    2022-07-18 14:16:19
  • Python中设置变量作为默认值时容易遇到的错误

    2023-09-14 09:32:00
  • 用python下载百度文库的代码

    2023-07-31 00:40:44
  • Python实现鸡群算法的示例代码

    2022-03-23 19:02:54
  • python爬取基于m3u8协议的ts文件并合并

    2021-11-03 16:44:45
  • Python return语句如何实现结果返回调用

    2021-06-06 21:13:51
  • asp之家 网络编程 m.aspxhome.com