• python之psutil模块:收集主机系统数据


      psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统。

      如下使用psutil模块收集系统各个参数(cpu、内存、存储、网络):

      1 #!/usr/bin/env python
      2 #coding:utf-8
      3 
      4 import psutil
      5 import time
      6 import sys
      7 
      8 def host_info():
      9     now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
     10     start_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(psutil.boot_time()))
     11     print('
    数据更新时间:',now_time,sep='
    ')
     12     print('开机时间:',start_time)
     13     print('当前用户:',psutil.Process().username())
     14     print('当前用户信息信息:',psutil.users())
     15 
     16 def cpu_info():
     17     ci=[]
     18     #print(psutil.cpu_times()) #元组显示CPU的所有信息
     19     #print(psutil.cpu_times().user) #获取user的执行用户进程的cpu时间比
     20     #print(psutil.cpu_stats())#元组返回上下文切换,中断,软中断和系统调用的次数统计
     21     print('''
     22 -------------------
     23 ******CPU信息******
     24 -------------------''')
     25     stats=psutil.cpu_stats()
     26     print('CPU状态数据:',end='')
     27     print('ctx_switches=',stats[0],' interrupts=',stats[1],' 
     28     soft_interrupts=',stats[2],' syscalls=',stats[1],sep='')
     29     print('物理CPU个数:',psutil.cpu_count(logical=False))
     30     print('逻辑CPU个数:',psutil.cpu_count())
     31     print('整体CPU使用率(2s):',psutil.cpu_percent(interval=2))
     32     print('各个CPU使用率:',psutil.cpu_percent(percpu=True,interval=2))
     33     print('逻辑CPU的详细信息:')
     34     logicpu=psutil.cpu_times(percpu=True)
     35     for i in range(0,4):
     36         num=i+1
     37         ci.clear()
     38         print(' +','逻辑CPU',[num],' ',sep='',end='')
     39         ci.append('user='+ str(logicpu[i][0]))
     40         ci.append('system'+ str(logicpu[i][1]))
     41         ci.append('idle=' + str(logicpu[i][2]))
     42         ci.append('interrupt=' + str(logicpu[i][3]))
     43         ci.append('dpc=' + str(logicpu[i][4]))
     44         print(ci)
     45         
     46 
     47 def mem_info():
     48     print('''
     49 -------------------
     50 ******内存信息******
     51 -------------------''')
     52     print('总内存(可用):',round(psutil.virtual_memory().total/1024/1024/1024,2),'G')
     53     print('已使用内存:',round(psutil.virtual_memory().used/1024/1024/1024,2),'G')
     54     print('空闲内存:',round(psutil.virtual_memory().free/1024/1024/1024,2),'G')
     55     print('内存使用率:',psutil.virtual_memory().percent,'%')
     56     print('
    交换(虚拟)内存信息:')
     57     print('总交换内存:',round(psutil.swap_memory().total/1024/1024/1024,2),'G')
     58     print('已使用内存:',round(psutil.swap_memory().used/1024/1024/1024,2),'G')
     59     print('空闲交换内存:',round(psutil.swap_memory().free/1024/1024/1024,2),'G')
     60     print('交换内存使用率:',psutil.swap_memory().percent,'%')
     61 
     62 def disk_info():
     63     print('''
     64 -------------------
     65 ******磁盘信息******
     66 -------------------''')
     67     print('磁盘信息:')
     68     for d in psutil.disk_partitions():
     69         print(d)
     70     print('使用信息:') #获取分区使用信息
     71     print('	磁盘总量:',psutil.disk_usage('/').total/1024/1024/1024,'G',' 已使用存储:'
     72           ,psutil.disk_usage('/').used/1024/1024/1024,'G',
     73           '
    	空闲存储:',psutil.disk_usage('/').free/1024/1024/1024,'G',
     74           ' 磁盘使用率:',psutil.disk_usage('/').percent,'%')
     75     print('各个磁盘IO信息:',psutil.disk_io_counters(perdisk=True))
     76 
     77 def net_info():
     78     print('''
     79 -------------------
     80 ******网卡信息******
     81 -------------------''')
     82 #网卡信息
     83     #print(psutil.net_io_counters()) #获取网卡的发送和接收的字节大小,发送和接收的包数
     84     #print(psutil.net_io_counters(pernic=True)) #获取每个网卡的信息
     85     #print(psutil.net_connections()) #获取套接字连接列表
     86     #print(psutil.net_if_stats())#获取网卡的状态,通信类型,传输速度,mtu值
     87     print('网卡配置信息(包含ip地址,mac地址,子网掩码,广播地址)')
     88     for k,v in psutil.net_if_addrs().items():
     89         print('|=->',k,':',v)
     90 
     91 
     92 def main():
     93     host_info()
     94     cpu_info()
     95     mem_info()
     96     disk_info()
     97     net_info()
     98 
     99 f= open('system_info.log', 'w')
    100 sys.stdout = f
    101 main()

    效果如图:

  • 相关阅读:
    Windows如何自定义U盘盘符、文件夹图标、文件夹背景
    BIN文件如何打开
    Windows COM Surrogate 已停止工作怎么办
    EasyBoot使用方法
    SRS Audio Sandbox没有声音怎么办
    [Compose] 20. Principled type conversions with Natural Transformations
    [Compose] 19. Leapfrogging types with Traversable
    [Compose] 17. List comprehensions with Applicative Functors
    [Compose] 15. Applicative Functors for multiple arguments
    [Algorithm] Coding Interview Question and Answer: Longest Consecutive Characters
  • 原文地址:https://www.cnblogs.com/cooper-73/p/10179881.html
Copyright © 2020-2023  润新知