这篇文章主要介绍了基于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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。