Python3-22/456 psutil获取进程和系统信息

psutil=process and system utilites,是Python的一个第三方模块,通过一两行代码实现获取操作系统以及硬件相关的信息,如:CPU、磁盘、内存、内存、用户进程、电池、风扇等信息,支持Linux/Uinx/OSX/Windows跨平台使用,是系统运维管理员和运维人员不可不知的Python模块!常用于使用Python来编写脚本来简化日常的运维工作,如在Linux下,有许多的系统命令可以让我们时刻监控系统运行的状态,如ps、free、top、iostat、vmstat、sar等命令从而获取系统信息,以下是psutil模块实现前述命令相等的作用

import datetime
import psutil

'''
CPU(load)
MEM
SWAP(Linux)
DISK
DISK(IO)
NET
'''

def bootinfo():
    print("系统开机信息:")
    boot_time = psutil.boot_time()
    boot_time_2human = datetime.datetime.fromtimestamp(boot_time).strftime("%Y-%m-%d %H:%M:%S")
    print("系统开机时间是:%s" % boot_time_2human)

def loadavg():
    print("系统平均负载:")
    load_avg = psutil.getloadavg()
    print("系统平均负载大小: 1分钟:%s 5分钟:%s 15分钟:%s " % load_avg)

def memoryissue():
    print("内存使用信息:")
    mem = psutil.virtual_memory()
    memtotal = round(mem.total / 1024 / 1024, 2)  # round函数保留两位小数
    memused = round(mem.used / 1024 / 1024, 2)
    mempercent = str(round(mem.used / mem.total * 100, 2)) + '%'
    print("内存使用大小是:%s MB" % memused, end='\n')
    print("内存总大小是:%s MB" % memtotal, end='\n')
    print("内存使用率是:%s" % mempercent, end='\n')

def swapissue():
    print("SWAP使用信息:")
    swapinfo = psutil.swap_memory()
    swapinfo_total = round(swapinfo.total / 1024 / 1024, 2)
    swapinfo_used = round(swapinfo.used / 1024 / 1024, 2)
    swapinfo_percent = str(round(swapinfo_used / swapinfo_total * 100, 2)) + '%'
    print("SWAP总大小: %s" % swapinfo_total, end='\n')
    print("SWAP已使用大小:%s" % swapinfo_used)
    print("SWAP使用率: %s" % swapinfo_percent)

def diskissue(diskname):
    print("磁盘信息:")
    disk = psutil.disk_partitions()
    disuse = psutil.disk_usage(diskname)
    # disuse = psutil.disk_usage("D:\\")
    diskused = round(disuse.used / 1024 / 1024 / 1024, 2)
    disktotal = round(disuse.total / 1024 / 1024 / 1024, 2)
    diskpercent = str(round(diskused / disktotal * 100, 2)) + '%'
    print("硬盘使用大小是:%s GB" % diskused, end='\n')
    print("硬盘总大小是:%s GB" % disktotal, end='\n')
    print("硬盘使用率是:%s" % diskpercent, end='\n')

def ioissue():
    print("磁盘I/O信息:")
    # io_counter = psutil.disk_io_counters()
    io_counter = psutil.disk_io_counters(perdisk=True)  ##获取单个分区的IO和读写信息
    # print("磁盘读IO数: %s,磁盘写IO数据:%s,磁盘读IO字节大小:%s, 磁盘写IO字节大小:%s, 磁盘读时间:%s, 磁盘写时间: %s" %io_counter )
    print(io_counter)

def cpuissue():
    print("CPU信息:")
    cpu_logical_count = psutil.cpu_count()
    cpu_physical_count = psutil.cpu_count(logical=False)
    cpu_percent = psutil.cpu_percent(interval=None, percpu=True)
    cpu_user_times = round(psutil.cpu_times().user, 2)
    # cpu_iowait_times = round(psutil.cpu_times().iowait, 2)
    print("CPU的逻辑个数:%s" % cpu_logical_count)
    print("CPU的物理个数:%s" % cpu_physical_count)
    print("每个CPU使用率:%s" % cpu_percent)
    print("用户的CPU时间比:%s" % cpu_user_times)
    # print("iowait的CPU时间比:%s" % cpu_iowait_times)

def netissue():
    net = psutil.net_io_counters()
    bytes_sent = '{0:.2f} MB'.format(net.bytes_sent / 1024 / 1024)
    bytes_recv = '{0:.2f} MB'.format(net.bytes_recv / 1024 / 1024)
    print("网卡接受流量:%s, 网卡发送流量是:%s" % (bytes_recv, bytes_sent), end='\n')


print('#' * 50)
memoryissue()
print('#' * 50)
swapissue()
print('#' * 50)
diskissue(r'C:\\')
print('#' * 50)
cpuissue()
print('#' * 50)
netissue()
# print('#' * 50)
# loadavg()
print('#' * 50)
bootinfo()
print('#' * 50)
ioissue()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值