基于python调用psutil模块过程解析
这篇文章主要介绍了基于python调用psutils模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。
在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil=processandsystemutilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。
代码如下
oshelper.py
#encoding=utf-8 importpsutil importdatetime #查看cpu的信息 printu"CPU个数%s"%psutil.cpu_count() printu"物理CPU个数%s"%psutil.cpu_count(logical=False) printu"CPUuptimes" printpsutil.cpu_times() print"" #查看内存信息 mem=psutil.virtual_memory() printu"系统总内存%sG"%(mem.total/1024/1024/1024) printu"系统可用内存%sG"%(mem.available/1024/1024/1024) mem_rate=int(mem.available)/float(mem.total) printu"系统内存使用率%s%%"%int(mem_rate*100) #交换分区 swapmem=psutil.swap_memory() printu"交换分区%sG"%(swapmem.total/1024/1024/1024) printu"交换分区可用%sG"%(swapmem.free/1024/1024/1024) printu"交换分区使用率%s%%"%int(swapmem.percent) #系统启动时间 printu"系统启动时间%s"%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d%H:%M:%S") #系统用户 users_count=len(psutil.users()) users_list=",".join([u.nameforuinpsutil.users()]) printu"当前有%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) printu"网卡接收流量%s网卡发送流量%s"%(bytes_rcvd,bytes_sent) nis=psutil.net_io_counters(pernic=True) printu"网卡",tuple(nis) #进程进程的各种详细参数 defshow_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方法启动应用程序,可以跟踪程序的相关信息 fromsubprocessimportPIPE p=psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE) ''' p.name() #p.username() except: pass ''' pids=psutil.pids() forpidinpids: show_process(pid) ''' withopen(r'd:\temp\test.txt','w')asf: sys.stdout=f forprocinpsutil.process_iter(): ''' ifproc.name()=="w3wp.exe": cpu_threshold=proc.cpu_percent(interval=2)/24 printproc.name(),proc.create_time(),cpu_threshold p.terminate()proc.kill() Iterateoverallportsthisprocessislisteningto forconinproc.get_connections(): con ''' pa=proc.as_dict() printpa.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') printu"当前进程:",psutil.Process(os.getpid()).cmdline() #磁盘磁盘的使用量等等 dps=psutil.disk_partitions() fordpindps: dp du=psutil.disk_usage('/') printu"硬盘总共容量%sG"%(du.total/1024/1024/1024) printu"硬盘可用%sG"%(du.free/1024/1024/1024) printu"硬盘已用%s%%"%(du.percent)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。