• 1.python系统性能信息模块之psutil模块


    Psutil(进程和系统实用程序)是一个跨平台的库,用于在Python中检索有关运行进程和系统资源利用率(CPU,内存,磁盘,网络)的信息。它主要用于系统监视,分析和限制系统资源及运行进程的管理。它实现了Linux命令工具提供的许多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,nice,ionice,iostat,iotop,uptime,pidos,tty,tasket,pmap等。psutil目前支持以下平台:linux、Windows、OSX、FreeBSD,OpenBSD、NETBSD、sun Solaris、AIX操作系统。所以是python实现系统运维不可或缺的模块。

    官方下载地址:https://pypi.org/

    psutil模块安装:https://github.com/giampaolo/psutil

    我这里使用windows10系统,pip install psutil安装

    具体使用:

    一.系统管理

    1.查看cpu信息

    psutil.cpu_times()

    参数介绍:

    • user:用户进程使用的CPU时间累计
    • nice:优先级为负值的进程使用时间
    • system:内核进程使用时间累计
    • idle:CPU空闲时间累计
    • iowait:等待IO花费的时间
    • irq:硬中断时间累计
    • softirq:软中断时间累计
    • steal:花费在虚拟机中的时间

    2.显示cpu所有逻辑信息

    psutil.cpu_times(percpu=True)

    3.查看用户的cpu时间比

    psutil.cpu_times().user

    4.查看cpu逻辑个数

    psutil.cpu_count()

    5.查看cpu物理个数

    psutil.cpu_count(logical=False)

    -----------------------------------------------

    6.查看系统内存

    mem = psutil.virtual_memory() //系统内存所有信息
    mem.total //系统总计内存
    mem.used //系统已经使用内存
    mem.free //系统空闲内存
    mem.active //系统正在使用的内存和最近使用内存
    mem.inactive //系统已经分配的内存,但还没有使用的
    mem.shared //系统共享的内存
    mem.buffers //系统缓冲区内存
    mem.cached //系统cpu缓存空间,存放经常使用的数据

    7.获取swap交换内存信息

    psutil.swap_memory()

    ----------------------------------------------

    8.读取磁盘参数

    磁盘IO信息包括

    read_count(读IO数),

    write_count(写IO数)

    read_bytes(IO写字节数),

    read_time(磁盘读时间),

    write_time(磁盘写时间)

    9.获取分区信息

    psutil.disk_partitions()

    10.获取指定分区的信息

    psutil.disk_usage('/')   #获取/分区的状态

    11.获取磁盘总的IO详情

    psutil.disk_io_counters()

    12.获取单个分区IO个数

    psutil.disk_io_counters(perdisk=True)    #perdisk=True参数获取单个分区IO个数

    13.读取网络信息

    网络信息与磁盘IO信息类似,涉及到几个关键点,包括

    byes_sent(发送字节数),

    byte_recv=xxx(接受字节数),

    pack-ets_sent=xxx(发送字节数),

    pack-ets_recv=xxx(接收数据包数),这些网络信息用

    获取网络总IO信息

    psutil.net_io_counters()  

    14.输出网络每个接口信息

    psutil.net_io_counters(pernic=True)     #pernic=True

    15.获取当前系统用户登陆信息

    psutil.users()

    16.获取系统开机时间

    psutil.boot_time()  #以linux时间格式返回

    17.将获取到的时间转换成可视时间

    import datetime
    datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")

    二.系统进程管理

    列出所有的进程信息:

    >>> res = psutil.process_iter()
    >>> for i in res:
    ...     print(i)

    1.列出系统所有进程的ID

    psutil.pids()

    2.获取某一进程的信息,参数为pid

    psutil.Process(pid)

    3.获取指定进程的名称

    psutil.Process(pid).name()

    4.获取指定进程的执行命令的路径

    psutil.Process(pid).exe()

    5.获取指定进程的工作路径的绝对路径

    psutil.Process(pid).cwd() 

    6.获取进程的状态

    psutil.Process(pid).status()

    7.进程创建时间

    psutil.Process(pid).create_time()

    8.以可视的方式显示创建进程的时间

    datetime.datetime.fromtimestamp(psutil.Process(pid).create_time()).strftime("%Y-%m-%d %H: %M: %S")

    9.获取指定进程的uid信息

    psutil.Process(pid).uids()

    10.获取指定进程的gid信息

    psutil.Process(pid).gids()

    11.获取指定进程的cpu时间信息,包括user,system

    psutil.Process(pid).cpu_times()

    12.获取进程cpu的亲和度

    psutil.Process(pid).cpu_affinity()

    13.进程内存的利用率

    psutil.Process(pid).memory_percent()

    14.进程内存的rss和vms的值

    psutil.Process(pid).memory_info()

    15.指定进程的IO数,包括读写IO数及字节数

    psutil.Process(pid).io_counters()

    16.返回打开进程的socket的namedutples列表,包括(fs,family,laddr)等信息

    psutil.Process(pid).connections()

    17.指定进程开启的线程数

    psutil.Process(pid).num_threads()

    -------------------------------------------------------

    18.popen类的使用

    from subprocess import PIPE
    P = psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE)  执行系统中的命令,非交互,并且输出。

    >>> P.name()

    'python'

    >>> P.username()

    'root'

    >>> P.communicate()
    ('hello
    ', None)
  • 相关阅读:
    图论小测
    有关连通性
    差分约束
    php中代码执行&&命令执行函数【转载】
    Boss直聘的一个csrf与url跳转漏洞(已经修复)
    Immunity Canvas初体验加操作指南
    SSRF复习版本
    XXE漏洞复习版本
    信息收集汇总
    web前端逆向初体验
  • 原文地址:https://www.cnblogs.com/bmjoker/p/10559872.html
Copyright © 2020-2023  润新知