CPU内存监控脚本

# -*- coding: utf-8 -*-
"""
--------------------------------
Time        : 2024/3/21 11:50
Author      : Ning
Description : 
    xitong_jiankong.py
    系统内存、cpu使用情况检测
--------------------------------
"""
from loguru import logger
import requests, time, os, sys, re, json
import psutil


class xitong_jiankongs():
    def __init__(self):
        pass

    def __del__(self):
        pass

    # 内存
    def neicun(self):
        """
        以适于人类可读方式显示内存信息。-h与其他命令最大不同是-h选项会在数字后面加上适于人类可读的单位
        free -h
        """
        mem = psutil.virtual_memory()
        # 系统总计内存(单位字节)
        zj = round(float(mem.total) / 1024 / 1024 / 1024, 2)
        # 系统已经使用内存(单位字节)
        ysy = round(float(mem.used) / 1024 / 1024 / 1024, 2)
        # 系统空闲内存(单位字节)
        kx = round(float(mem.free) / 1024 / 1024 / 1024, 2)
        keyong = round(float(mem.available) / 1024 / 1024 / 1024, 2) # 可用内存
        logger.info(f"可用内存:{keyong}")
        # 已使用百分比
        yishiyong = mem.percent
        logger.info(f"内存大小为:{zj}GB,已使用:{ysy}GB,可用:{kx}GB,已使用:{yishiyong}%")

    # CPU
    def cpu(self):
        """
        # 查看物理CPU个数
        cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
        # 查看每个物理CPU中core的个数(即核数)
        cat /proc/cpuinfo| grep "cpu cores"| uniq
        # 查看逻辑CPU的个数
        cat /proc/cpuinfo| grep "processor"| wc -l
        """
        # 使用psutil.cpu_count()获取CPU的逻辑处理器个数
        # psutil.cpu_count(logical=False)获取CPU的物理个数(内核个数)
        cpu_count = psutil.cpu_count()  # 获取CPU 的逻辑个数,默认logical=True
        logical = psutil.cpu_count(logical=False)  # 获取CPU 的物理个数
        shiyonglv = psutil.cpu_percent(interval=1) #CPU使用率
        logger.info(f"CPU配置为:{logical}核,{cpu_count}处理器,使用率:{shiyonglv}%")
        return
        cpu_time = psutil.cpu_times()
        logger.debug(cpu_time)
        logger.info(psutil.cpu_times_percent())
        logger.info(psutil.cpu_stats())
        logger.info(psutil.cpu_freq())
        logger.info(psutil.getloadavg())
        p = psutil.cpu_times(percpu=True)  # 使用cpu_times 方法获取CPU完整信息,需要显示所有逻辑CPU信息,percpu = True可选
        s = psutil.cpu_times().user  # 获取单项数据信息,如用户user 的CPU 时间比
        logger.debug(p)
        logger.debug(s)
        # cpu_percent 以百分比表示当前系统范围内的CPU使用率
        # 当interval> 0.0时比较间隔前后的系统CPU时间(此时将会处于阻塞)
        # 当interval为0.0或None,比较自上次调用或模块导入以来经过的系统CPU时间(不阻塞)
        # 这意味着第一次调用它会返回一个无意义的0.0值,您应该忽略该值 。
        logger.info(psutil.cpu_percent())
        logger.info(psutil.cpu_percent(interval=1))
        logger.info(psutil.cpu_percent(interval=None))
        # 当percpu为True时,返回一个浮点列表,以每个CPU的百分比表示利用率。
        # 列表的第一个元素是指第一个CPU,第二个元素是指第二个CPU,依此类推。列表的顺序在各个呼叫之间是一致的。
        logger.info(psutil.cpu_percent(interval=1, percpu=True))
        # 将会以百分比的形式返回当前系统范围的CPU的利用率。
        logger.info(psutil.cpu_percent(interval=None, percpu=False))



    def main(self):
        self.neicun()
        self.cpu()


xitong_jiankong = xitong_jiankongs()
if __name__ == "__main__":
    xitong_jiankong.main()
    logger.debug("========程序运行结束========")
posted @ 2024-03-21 16:50  柠柠七  阅读(30)  评论(0编辑  收藏  举报