需求分析:
监控脚本使用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()