Python 自动化运维:系统基础信息

思维导图

在这里插入图片描述


前言

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


一、系统基础信息模块详解

1.1系统性能信息模块psutil

1.1.1 psutil简介

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

1.1.1安装psutil

pip install psutil

在这里插入图片描述

1.1.2获取系统性能信息

采集系统的基本性能信息包括CPU、内存、磁盘、网络等,可以完整描述当前系统的运行状态及质量。psutil模块已经封装了这些方法,用户可以根据自身的应用场景,调用相应的方法来满足需求,非常简单实用。

CPU信息

cpu_sumlogical = psutil.cpu_count()  # CPU逻辑数量
cpu_sumphysics = psutil.cpu_count(logical=False)  # 获取CPU的物理个数
cpu_t = psutil.cpu_times()  # CPU运行时间
cpu_p = psutil.cpu_percent(interval=1, percpu=True)  # 当前逻辑CPU使用率

print("CPU逻辑数量={}".format(cpu_sumlogical))
print("CPU物理数量={}".format(cpu_sumphysics))
print("CPU运行时间={}".format(cpu_t))
print("当前逻辑CPU使用率{}".format(cpu_p))

在这里插入图片描述

内存信息
virtuaf_m = psutil.virtual_memory()  # 物理内存使用情况
print("内存信息 \n\t内存总数={:0.2f}G \n\t已使用的内存数={:0.2f}G  \n\t使用率={}%  \n\t空闲内存数={:0.2f}G".format(virtuaf_m[0]/(1024*1024*1024), virtuaf_m[3]/(1024*1024*1024), virtuaf_m[2], virtuaf_m[4]/(1024*1024*1024)))

在这里插入图片描述

磁盘信息
io = psutil.disk_partitions()
#print("系统磁盘信息:" + str(io))

for i in io:
    try:
        o = psutil.disk_usage(i.device)
        ioo=psutil.disk_io_counters()
        print(ioo)
    except Exception as e:
        pass
    print("%s盘总容量:"%i.device + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G")
    print("已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G")
    print("可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G")

在这里插入图片描述

网络信息
net = psutil.net_io_counters()
'''
系统的网络信息与磁盘IO类似,涉及几个关键点,
包括bytes_sent(发送字节数)
bytes_recv=28220119(接收字节数)
packets_sent=200978(发送数据包数)
packets_recv=212672(接收数据包数)
这些网络信息使用psutil.net_io_counters)方法获取,具体见下面的操作例子:
'''
bytes_sent = '{0:.2f} Mb'.format(net[0]/(1024*1024)) 
bytes_rcvd = '{0:.2f} Mb'.format(net[1] /(1024*1024))
packets_sent = net[2]
packets_recv = net[3]

print("网卡接收流量= %s \n网卡发送流量= %s" % (bytes_rcvd, bytes_sent))
print("发送数据包数= %s个 \n接收数据包数= %s个" % (packets_sent, packets_recv))

在这里插入图片描述

参考:https://blog.csdn.net/wide288/article/details/72911195?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值