操作系统信息
cpu
# cpu_percent返回间隔1秒的cpu使用率
info['CPU Usage'] = psutil.cpu_percent(interval=1)
内存
# virtual_memory().percent 返回内存使用率
psutil.virtual_memory().percent
硬盘
# disk_partitions()返回硬盘信息列表
partitions = psutil.disk_partitions()
print(partitions)
for partition in partitions:
print(f"分区: {partition.device}")
print(f"挂载点: {partition.mountpoint}")
print(f"文件系统类型: {partition.fstype}")
# 获取指定挂载点的硬盘使用情况
usage = psutil.disk_usage(partition.mountpoint)
print(f"总空间: {usage.total / (1024 ** 3):.2f} GB")
print(f"已使用空间: {usage.used / (1024 ** 3):.2f} GB")
print(f"可用空间: {usage.free / (1024 ** 3):.2f} GB")
print(f"使用率: {usage.percent}%")
print("-" * 40)
硬盘读写
# 获取初始的磁盘I/O计数器
initial_io_stats = psutil.disk_io_counters()
# 等待60秒
time.sleep(60)
# 获取结束时的磁盘I/O计数器
final_io_stats = psutil.disk_io_counters()
# 计算读取和写入的字节数以及操作数
read_bytes = final_io_stats.read_bytes - initial_io_stats.read_bytes
write_bytes = final_io_stats.write_bytes - initial_io_stats.write_bytes
read_count = final_io_stats.read_count - initial_io_stats.read_count
write_count = final_io_stats.write_count - initial_io_stats.write_count
# 输出结果
print(f"在过去的60秒内:")
print(f"读取字节数: {read_bytes} 字节")
print(f"写入字节数: {write_bytes} 字节")
print(f"读取操作数: {read_count}")
print(f"写入操作数: {write_count}")
网络读写
# 获取初始的网络I/O计数器
prev_stats = psutil.net_io_counters()
# 等待60秒
time.sleep(60)
# 获取结束时的网络I/O计数器
current_stats = psutil.net_io_counters()
# 计算读取和写入的字节数以及操作数
# 一分钟内的发送字节数
bytes_sent = current_stats.bytes_sent - prev_stats.bytes_sent
# 一分钟内的接收字节数
bytes_recv = current_stats.bytes_recv - prev_stats.bytes_recv
# 一分钟内的发送包数
packets_sent = current_stats.packets_sent - prev_stats.packets_sent
# 一分钟内的接收包数
packets_recv = current_stats.packets_recv - prev_stats.packets_recv
# 一分钟内的接收错误包数
errin = current_stats.errin - prev_stats.errin
# 一分钟内的发送错误包数
errout = current_stats.errout - prev_stats.errout
# 一分钟内的接收丢失包数
dropin = current_stats.dropin - prev_stats.dropin
# 一分钟内的发送丢失包数
dropout = current_stats.dropout - prev_stats.dropout
服务端口信息
测试mysql端口是否占用
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
try:
s.connect(('localhost', 3306))
return True
except socket.error as e:
return False