Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)

mac2024-05-08  69

1.安装psutil

psutil用于在python中检索有关正在运行的进程和系统利用率的信息cmd下运行pip install psutil

2.获取CPU信息

一个是物理数量。一个是逻辑数量,其中logical的值默认为True。

psutil获取系统CPU使用率的方法是cpu_percent(),其有两个参数,分别是interval和percpu;interval指定的是计算cpu使用率的时间间隔,percpu则指定是选择总的使用率还是每个cpu的使用率;

获取内存信息:使用psutil.virtual_memory() 获取系统内存的使用情况;使用 psutil.swap_memory()获取系统交换内存的统计信息;

使用 psutil.disk_partitions() 获取磁盘分区的信息;使用psutil.disk_usage('/')获取磁盘的使用情况;使用psutil.disk_io_counters() 获取磁盘的IO统计信息(读写速度等);

获取网络信息:

使用psutil.net_io_counters()获取总的网络IO信息使用 psutil.net_io_counters(pernic=True)获取网卡的IO信息

使用 psutil.net_if_addrs() 获取网络接口信息

使用psutil.net_if_stats()获取网络接口状态信息

类似于linux的ps:psutil.test()

查看系统全部进程:psutil.pids()

查看单个进程

3.监控设计

#远程监控服务器 import socket import time import threading s=socket.socket() s.bind(("0.0.0.0",2345)) s.listen(8) def tcplink(sock,addr): print(f"客户端{addr}已接入") print(f"{'time':16s}{'cpu':8s}{'mem':8s}{'host':8s}") while 1: data=sock.recv(2048) result=data.decode() print(result+"\t"+addr[0]) with open("blacklist.txt") as f: blacklist=f.read() sock.send(blacklist.encode()) time.sleep(1) while 1: sock,addr=s.accept() t=threading.Thread(target=tcplink,args=(sock,addr)) t.start() #远程监控客户端 import psutil import socket import time import sys sip=sys.argv[1] sport=int(sys.argv[2]) s=socket.socket() while 1: try: s.connect((sip,sport)) break except: time.sleep(10) while 1: c=psutil.cpu_percent(interval=1) m=psutil.virtual_memory().percent d=psutil.disk_usage("/").percent t=time.strftime("%H:%M:%S") result=f"{t}\t{c}\t{m}\t{d}" s.send(result.encode()) blacklist=s.recv(1024).decode() pids=psutil.pids() for pid in pids: try: p=psutil.Process(pid) if p.name() in blacklist: p.terminate() except: pass

执行结果如下:

在客户端没有启动时,服务器端并不会报错,隔断时间会重新连接一次。

然后执行客户端程序:

服务器端程序

……

最新回复(0)