需求分析:
监控脚本使用psutil模块来获取:
1、隔一秒钟输出一次信息,运行之后监控10s: import time ,time.sleep(1)
2、cpu的平均使用率、显示cpu的逻辑核数,
3、显示总内存大小(单位m),使用率
4、磁盘/(根)目录大小(单位m),使用率。
5、显示当前时间:import datatime
6、本机ip是多少,网络使用情况,收发多少m数据
7、将这些使用情况保存到一个文件中。
单位转换:字节(bite)-兆(M)-G(1024)
直接打印输出:
import psutil #是一个功能强大的跨平台的系统管理库 import datetime import time def func1(): # #cpu的逻辑核数 cpu_core = psutil.cpu_count(logical=False) # cpu的使用率 # time.sleep(1) #睡眠一秒钟 cup_per = psutil.cpu_percent(interval=1)#每隔1秒刷新一下 # 内存信息 memory_info = psutil.virtual_memory() # 硬盘信息 disk_info = psutil.disk_usage("/") #根目录磁盘信息 # 网络信息 net_info = psutil.net_io_counters() #接收数据 in_info = net_info.bytes_recv #发送数据: send_info = net_info.bytes_sent #本机ip ip_add = psutil.net_if_addrs() # print(ip_add) ##windows中的ip截取: #ip_add1 = ip_add['本地连接* 13'][2][1] #Linux中的ip截取 ip_add1 = ip_add['ens33'][0][1] # 获取当前系统时间 current_time = datetime.datetime.now().strftime("%F %T") #%F年月日 %T时分秒 #方式一:直接打印输出 print(f"当前时间为:{current_time}") print(f"cpu的逻辑核数为:{cpu_core}") print(f"cpu的使用率为:{cup_per}%") print(f"总内存大小为:{memory_info.total/1024/1024}M") print(f"根目录大小为:{disk_info.total/1024/1024}M") # print(f"本机的ip为{ip_add1}") print(f"网络使用情况为:接收的数据为:{in_info/1024/1024}M,发送的数据为:{send_info/1024/1024}M") 字节(bite)-兆(M)-G(1024) start = time.time() end = time.time() count = 0 while end - start < 10: count += 1 end = time.time() time.sleep(1) print(f"第{count}次") func1()
设计的界面更加好看完善:
import psutil #是一个功能强大的跨平台的系统管理库 import datetime import time def func(): # cpu的使用率 cup_per = psutil.cpu_percent(interval=0.5) # 0.5刷新频率 time.sleep(1) # 睡眠一秒钟 # cpu的逻辑核数 cpu_core = psutil.cpu_count(logical=False) # 内存信息 memory_info = psutil.virtual_memory() # 硬盘信息 disk_info = psutil.disk_usage("/") # 根目录磁盘信息 # 获取当前系统时间 current_time = datetime.datetime.now().strftime("%F %T") # %F年月日 %T时分秒 # 获取网络信息 network = psutil.net_io_counters() # 接收数据 in_info = network.bytes_recv #发送数据: send_info = network.bytes_sent # 本机ip ip_add = psutil.net_if_addrs() print(ip_add) #windows中的ip截取: ip_add1 = ip_add['本地连接* 13'][2][1] # #Linux中的ip截取 # ip_add1 = ip_add['ens33'][0][1] # 方式二:拼接显示 log_str = "|---------------------|----------|---------------|--------------|----------------------------------------|\n" log_str += "|---------time--------|---cpu----|-----memory----|-----disk-----|----------------network-----------------|\n" log_str += "| | %dcore | %.2fM | %.2fM | ip:%s |\n" \ % (cpu_core, memory_info.total/1024/1024, disk_info.total/1024/1024, ip_add1) log_str += "| %s | %s%% | %s%% | %s%% | in: %.2fM out: %.2fM |\n" \ % (current_time, cup_per, memory_info.percent, disk_info.percent,in_info/1024/1024,send_info/1024/1024) print(log_str) # 保存信息到文件 with open("log.txt", "a+") as f: f.write(log_str + "\n\n") # 写入信息 #方式二:循环 count = 0 for i in range(10): count += 1 print(f"第{count}秒监控到的信息".center(50,"*")) func()