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()